很简单,只要你能搞懂
int a[3]={1,2,3}, *p=a;
++*p; *p++; *++p; ++*p;
这四个表达,这道题目基本就可以搞明白了。
在这个题目中,p->x++;先取用p指向的内存空间中的值,也就是a[0].x ,所以先输出100;
然后其内容再自加1,所以到p->x时输出101;
后面*p->y指的是:*(p->y); 也就是*(a[0].y); 即*(&d(0)), 也就是d(0)的内容,所以输出的结果就是10了;
最后一次输出的是*++p->y ; 查看运算符优先级即知:*(++(p->y)); 即:*(++(a[0].y));
也即:*(++(&d(0))),到这里就清楚了,也就是要对数组d的首地址基础上自加一个单位,然后再取出其地址指向的值,也就是取出d[1]的值了,所以最后输出20.
解毕。