C语言 求教高手帮忙 程序题

structks{inta;int*b;}s[4],*p;main(){intn=1,i;printf("\n");for(i=0;i<4;i++){s[i].a=n;s... struct ks
{int a;
int *b;
}s[4],*p;

main()
{int n=1,i;
printf("\n");
for(i=0;i<4;i++)
{s[i].a=n;
s[i].b=&s[i].a;
n=n+2;
}
p=&s[0];
p++;
printf("%d,%d\n",(++p)->a,(p++)->a);
}

运行结果是多少 我得的是5,7 答案给的是7,3 请问为啥得的7,3 ???????
展开
 我来答
lilaosi2001
推荐于2018-04-30 · TA获得超过823个赞
知道小有建树答主
回答量:296
采纳率:0%
帮助的人:354万
展开全部
struct ks
{int a;
int *b;
}s[4],*p;

main()
{int n=1,i;
printf("\n");
for(i=0;i<4;i++)
{s[i].a=n;
s[i].b=&s[i].a;
n=n+2;
}//出了这个循环后s[0]=1,s[1]=3,s[2]=5,s[3]=7
p=&s[0];//p只向s[0]
p++;//p指向s[1]
printf("%d,%d\n",(++p)->a,(p++)->a);//重点来了,函数调用传递参数是从右向左传递的,所以先传递的参数是,(p++)->a,这是p是指向s[1]的,++在后面所以先取值,再自加,第一个传递3,p自加后指向s[2];第二个参数传递,(++p)->a,++在前,所以先自加,p就指向了s[3],第二个传递的是7,整理后变成printf("%d,%d\n",7,3);
输出结果就是7,3了

}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式