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

admin2016-12-18  53

问题 设有如下的说明和定义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://jikaoti.com/ti/5ti0FFFM
0

最新回复(0)