A-A+
设有如下的说明和定义struct{inta;char*s;)x *p=&x;x.a=4;x.
问题详情
设有如下的说明和定义struct{inta;char*s;)x,*p=&x;x.a=4;x.S=hello;则以下叙述中正确的是
A.语句++p->a;的效果是使P增1
B.(p++)->a与p++->a都是合语法的表达式,但二者不等价
C.语句*p->s++;等价于(*p)->s++;
D.语句++p->a;的效果是使成员a增1
请帮忙给出正确答案和分析,谢谢!
参考答案
正确答案:D
p->a得到p指向的结构体变量中的成员a的值。p->a++得到p指向的结构体变量中的成员a的值,用完该值后使p-a加1。++p->a得到p指向的结构体变量中的成员a的值使之加1(先加)。由此可见指向运算符->优先级高于++,因此*p->s++相当于*(p->s)++,结合性自右至左,因此p++->a。和(p++)->a等价。