设有如下的说明和定义 struct { int a; char *s; } x, *p = &x; x.a = 4; x.s = "hello"; 则以下叙述中正确的是

admin2020-05-19  28

问题 设有如下的说明和定义 struct { int a; 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等价。
转载请注明原文地址:https://kaotiyun.com/show/cgCp777K
0

最新回复(0)