以下C语言程序的输出结果是( )。struct s{ int x,y;} dat

题库2022-08-02  24

问题 以下C语言程序的输出结果是( )。struct s{ int x,y;} data[2]={10,100,20,200};main(){ struct s *p=data; p++; printf(“%d\n”,++(p->x));}A.10B.11C.20D.21

选项 A.10
B.11
C.20
D.21

答案 D

解析 data是s类型的数组,即结构体数组,用{10,100,20,200}赋值,可知:data[0].x=10data[0].y=100data[1].x=20data[1].y=200struct s *p,p是data数组的指针。指向数组的第一个元素,*p即为data[0]。p++之后,即地址向后移动,此时p指向数组的第二个元素,*p即为data[1].p->x和(*p).x是一样的,p->x和data[1].x等价。所以在++(p->x)之后,data[0].x的值变为21。输出21。
转载请注明原文地址:https://www.tihaiku.com/congyezige/2424776.html

最新回复(0)