若有以下定义和语句: struct st{int n;struct st*next;}; struct st a[3]={5,&a[0],6,&8[1],7,&a[2]},*p; P=&a[0]; 则值为6的表达式是

admin2017-07-05  24

问题 若有以下定义和语句:
    struct st{int n;struct st*next;};
    struct st a[3]={5,&a[0],6,&8[1],7,&a[2]},*p;
    P=&a[0];   
    则值为6的表达式是(提示:运算符一>的优先级高于++)(    )。

选项 A、(*p).n++
B、p++一>n
C、p一>n++
D、(++p)一>n  

答案D

解析 定义指向结构体变量的指针p,并将结构体数组首地址赋给p。(++p)一>n,p指针自加一指向数组第二个元素,其成员n=6,D选项正确。p++一>n,p指向结构体数组第一个元素,其成员n=5。p一>n++,p指向结构体数组第一个元素,其成员n=5,由于++是后缀,先取值,所以表达式为5,之后再自加一。(*p).n++,*p为结构体数组第一个元素,其成员n=5,先取值,表达式为5。故选D。
转载请注明原文地址:https://kaotiyun.com/show/EpDp777K
0

最新回复(0)