以下C语言程序的输出结果是( )。(2016年嵌入式系统设计师) struct s { int x,y; } data[2]={10,100,20,200}; main() { struct
以下C语言程序的输出结果是( )。(2016年嵌入式系统设计师)
struct s
{ int x,y;
} data[2]={10,100,20,200};
main()
{ struct s *p=data;
p++;
printf(“%d\n”,++(p->x));
}
A.10 B.11 C.20 D.21
参考答案:B
参考解析:data是s类型的数组,用{10,100,20,200}赋值,可知:
data[0].x=10
data[0].y=100
data[1].x=20
data[1].y=200
struct s *p,p是data数组的指针。指向数组的第一个元素,*p即为data[1]。
p->x和(*p).x是一样的,p->x和data[0].x等价。所以在++(p->x)之后,data[0].x的值变为11。输出11。