struct st

structst{intx;int*y;}*p;intdt[4]={10,20,30,40};structstaa[4]={50,&dt[0],60,&dt[1],70,... 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]};
main()
{ p=aa;
printf(“%d ”,++p->x);
printf(“%d ”,(++p)->x);
printf(“%d ”,++(*p->y));}
上面的程序有没有高手指点一下是怎么回事
展开
 我来答
wk23415
推荐于2018-04-13 · TA获得超过1005个赞
知道小有建树答主
回答量:621
采纳率:0%
帮助的人:824万
展开全部
我是这么理解的。
struct st{
int x;
int *y;
}*p;

int dt[4]={10,20,30,40};

st aa[4]={50,&dt[0],60,&dt[1],70,&dt[2],80,&dt[3]};
// aa[0] aa[1] aa[2] aa[3]
int main(){
//这里涉及到的运算符的优先级是这样的,() 优于 -> 优于 ++ 优于 *
p=aa;//p指针指向aa,即指向aa的第一个元素地址
printf("%d",++p->x);//先取aa的第一个元素的x值,再对x+1=51
printf("%d",(++p)->x);//p指针先+1,指向aa的第二个元素,取其x的值为60
printf("%d",++(*p->y));//p指针现在仍指向aa的第二个元素,取*y的值,*p->y是对*y所指向的地址的访问,所以对应的是dt[1],20,再20+1=21
return 0;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式