C语言选择题,详解

以下对结构体变量stu1中成员age的引用有效的是( )。
struct student
{int age;
int num;
}stu1,*p=&stu1;
A) student.age B) p.age C) p->age D) *p.age
以上题目选什么?为什么?

C
struct student为结构体类型
引用结构体变量中的成员的值的方式为:
结构体变量名.成员名
【A不符合】

通过指针引用结构体变量是用(*p).age表示。
(*p)表示p所指向的结构体变量,(*p).age是p指向的结构体变量中的成员age。
注意 *p两侧的括号不可省,因为成员运算符“.”优先于“*”运算符,*p.age就等价于*(p.age)了。

为了使用方便和直观,C语言允许把(*p),age用p->age来代替,“->”代表一个箭头,p->age表示P所指向的结构体变量中的age成员。同样,(*p).age等价于p->age。“-> ”称为指向运算符。

如果p指向一个结构体变量stu,以下三种用法等价:
①stu.成员名(如stu.age);
②(*p).成员名(如(*p).age);
③p->成员名(如p->age)。
【B、D不符合】
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-01-10
A)student.age //student是自己定义的结构体名称,只是一个类型名称,如int,char,float...
int 如何用?
int x; 这个x才是真正的变量.
同上,
struct student stu1;
定义一个student结构体的变量stu1.
所以正确写法是stu1.age
B)p.age //p是一个指针,引用时用->,这里却用了.
C)p->age //正确答案
D)*p.age //*为取值运算符,取p内容
--------------------------------
总结:
1) 结构体变量.成员名
2) 指向结构体变量的指针->成员名本回答被网友采纳
第2个回答  2013-01-09
C是正解,student结构体,A首先排除; p是指针,B也是错的;C是正解;D中*p是指针变量对应的值,表达也不符合
第3个回答  2013-01-10
本人认为选C,p为指针,应用 -> 调用成员,故B错。A错在student不是变量,而是结构体。D应该不可以这样表示吧(这个我找不出证据说服)。
第4个回答  2013-01-10
C
只有C表达对的,
你大可以写到VS里,例如写D项:写到*p.后不会出现成员表。
第5个回答  2013-01-10
--------------------我错
相似回答