下面程序的输出结果是

#include<stdio.h>
struct st;
{int x;
int *y;
}*p;
int dt[4]={10,20,30,40};
struct st aa[4]={50,&dt[0],60,&dt[1],70,&dt[2],80,&dt[3]};
void main()
{p=aa;
printf("%d",++p->x);
printf("%d",(++p)->x;);
printf("%d",++(*p->y));
}
解释下,谢咯

运行结果:
51
60
21
程序
#include<stdio.h>
struct st //原程序多了个分号
{int x;
int *y;
}*p;
int dt[4]={10,20,30,40}; //定义数组dt
struct st aa[4]={50,&dt[0],60,&dt[1],70,&dt[2],80,&dt[3]};
//定义结果数组aa
void main()
{p=aa; //结构指针p指向结构数组aa[0]
printf("%d\n",++p->x); //对aa[0]->x=50进行加1操作后输出
printf("%d\n",(++p)->x); //原程序括号位置错,指针加1后输出.即移到数组aa[0]的下一位置aa[1]处,此时,aa[1]->x=60
printf("%d\n",++(*p->y));//对aa[1]->y所指向的内容加1后输出,即地址&dt[1]的内容20加1后输出
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-04-18
这是一段c++的程序
我口算算不出来。你可以把它放进编译器里,再按ctrl+f5
相似回答