若有以下定义和语句 struct st{ int n; struct st *next; }; struct st a[3] = { 5,&a[0], 6,&a[1], 7,&a[2] }, *p; p=&a[0]

admin2020-11-27  23

问题 若有以下定义和语句
      struct  st{ int  n; struct  st *next; };
      struct st a[3] = { 5,&a[0], 6,&a[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。
转载请注明原文地址:https://jikaoti.com/ti/4pD0FFFM
0

最新回复(0)