问题
单项选择题
有以下程序段:
struct st
int x; int *y; ) *pt;
int a[]=1, 2), b[]=3, 4);
struct st c[2]=10, a, 20, b;
pt=c;
以下选项中表达式的值为11的是( )。
A) *pt->y
B) pt->x
C) ++pt->x
D) (pt++) ->x
答案
参考答案:C
解析: 本题考查的是*、->和++运算符的混合运算。要计算一个复杂的表达式时,首先要弄明白表达式中所有运算符的优先级与结合性,本题中所涉及的运算符中,->的优先级最高,*和++的优先级相同,但其结合性为从右至左。所以选项A)等价于*(pt->y),也就是pt所指向的结构体的成员指针变量y所指向的内容。从前面的程序段不难看出,pt指向结构体数组c的首地址,也就是指向它的第1个元素,在它的第1个元素中,指针变量y又被初始化为指向整型数组a的首地址,即指向数组a的第1个元素。故选项A)中的表达式的值为a[0],也就是1。pt->x的值为10。而D)选项(pt++)->x的值为20,也不正确。只有C)选项符合题意。