以下C语言程序输出结果是( )。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
正确答案及解析
正确答案
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。
你可能感兴趣的试题

-
- A.V(S2)和P(S4)
- B.P(S2)和V(S4)
- C.P(S2)和P(S4)
- D.V(S2)和V(S4)
- 查看答案

-
- A.V(S1)P(S2)和V(S3)
- B.P(S1)V(S2)和V(S3)
- C.V(S1)V(S2)和V(S3)
- D.P(S1)P(S2)和V(S3)
- 查看答案

-
- A.P(S4)和V(S4)V(S5)
- B.V(S5)和P(S4)P(S5)
- C.V(S3)和V(S4)V(S5)
- D.P(S3)和P(S4)V(P5)
- 查看答案

-
- A.P(S3)和V(S4)V(S5)
- B.V(S3)和P(S4)P(S5)
- C.P(S3)和P(S4)P(S5)
- D.V(S3)和V(S4)V(S5)
- 查看答案

-
- A.P(S2)和P(S4)
- B.P(S2)和V(S4)
- C.V(S2)和P(S4)
- D.V(S2)和V(S4)
- 查看答案