C语言 结构体变量成员的表达方法

Struct student { int age;char num[8];};
Sturct student stu[3]={{20,"200401"},{21,"200402"},{10\9,"20043"}};
Struct student *p=stu;
以下选项中引用结构体变量成员的表达式错误的是( )
A)(p++)->num B)p->num C)(*p).num D)stu[3].age

求每一项解释

答案:D)stu[3].age

A)(p++)->num //由于*p=stu;所以p指向了数组stu的首地址
B)p->num //由于*p=stu;所以p指向了数组stu的首地址
C)(*p).num //由于*p=stu;所以p指向了数组stu的首地址
D)stu[3].age // stu数组的下标范围0,1,2不能为3,3为越界访问
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-03-13
D,因为c的下标是从0开始的,3已经超出范围了(*p)等价于stu[3]
第2个回答  推荐于2018-04-12
很明显是D,stu[3]数组只有stu[0] stu[1] stu[2]三个成员,stu[3]数组越界本回答被网友采纳
第3个回答  2013-03-13
A 相当于 std[1].age B std[0].num C 同B D stu[3]越界本回答被提问者采纳
相似回答