C++:为什么运行的结果是11?不知道怎么求得11,看不懂程序。

来源:百度知道 编辑:UC知道 时间:2024/06/15 15:58:36
#include"stdio.h"
struct st
{
int x;
int *y;
}*pt;
main()
{
int a[]={1,2},b[]={3,4};
struct st c[2]={10,a,20,b};
pt=c;
printf("%d\n",++pt->x);
}

因为->的优先级高于前置++,所以10+1了。

这个程序的关键点在于:对于++pt->x的理解
由于->的优先级高于++,
所以实际上是先取得pt->x,再进行++处理

pt=c//将pt指向数组c的首地址,也就是10的地址

所以pt->x等于10,再进行++处理得到11