一道c语言指针题,求大神解答,感谢

inta[]={5,8,7,6,2,7,3},y;int*p;p=&a[1];y=(*--p)++;printf(“%d,%d,%d\n”,y,*p,*p++);... int a[]={5,8,7,6,2,7,3},y;
int *p;
p=&a[1];
y=(*--p)++;
printf(“%d,%d,%d\n”,y,*p,*p++);
展开
 我来答
一剑出血
高粉答主

2019-01-27 · 醉心答题,欢迎关注
知道大有可为答主
回答量:5.7万
采纳率:78%
帮助的人:1.7亿
展开全部

这题目输出的结果是

5,6,6

解析:

首先声明一个整型数组a,整形变量y,整型指针p。

p指向数组a[]的第1个元素,也就是8。

接下来,指针p先--,指向了数组a[]的第0个元素,也就是5。之后y取出p指向的内容,即5。之后p指针指向的内容又累加,即数组a[]的第0个元素从5变成了6。

因此打印输出y的内容是5,*p的内容是6,*p++的内容还是6(printf()执行完之后指针才移动,黄花菜都凉了)。

microroom
科技发烧友

2019-01-27 · 智能家居/数码/手机/智能家电产品都懂点
知道大有可为答主
回答量:7118
采纳率:83%
帮助的人:1630万
展开全部
int a[]={5,8,7,6,2,7,3},y;
int *p;
//p指向a[1](8)。
p=&a[1];
//--p,使p先自减1,p最后指向a[0]。于是(*--p)等于a[0],y=(*--p)++;等同于y=a[0]++;。y等于5,a[0]最后等于6。
y=(*--p)++;
//输出5,8,6,因为参数按从右往左压入栈中。即先算*p++,又p指向a[0],所以*p++输出6后,p指向a[1];再算*p,输出8;最后算y输出5。
printf(“%d,%d,%d\n”,y,*p,*p++);
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
乐垚MyWish
2019-01-27
知道答主
回答量:7
采纳率:0%
帮助的人:1.7万
展开全部
答案为,5,89
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
风起云涌888
2019-01-27 · TA获得超过158个赞
知道答主
回答量:137
采纳率:17%
帮助的人:22万
展开全部
结果5 8 6
追问
能不能说一下详细的过程,谢谢啦
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式