A-A+

设有以下C语言说明语句。 struct { int x y;} s[2]={{1 2) {3

2022-08-06 02:51:13 问答库 阅读 175 次

问题详情

设有以下C语言说明语句。 struct { int x,y;} s[2]={{1,2),{3,4}),*p=s,*q=s; 则表达式++p->x和表达式(q)->x的值分别为(34)。
A.1、1
B.1、3
C.2、3
D.3、3请帮忙给出正确答案和分析,谢谢!

参考答案

正确答案:C
解析:表达式++p->x中->(指向运算符)优先级高于++(自增运算符),所以先求出p->x中的值1。由于结构体数组元素(或结构体变量)中的成员是有存储单元的,可以像普通变量一样使用,因此++运算是针对s[0].x成员的,即该成员中的值自增后由1变为2。对于表达式(++q)->x,则是q先自增,q指向s[1],输出s[1].x成员中的值3。

考点:语句,语言