c语言初学者,有大佬能解释下吗?为什么答案是11,11,11,12

 我来答
White_MouseYBZ
2019-05-30 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6281万
展开全部
结果是11,11,11,12正确啊。因为第一行printf输出的是++*p,就是对10先加1再输出,当然是11,接着再printf输出*p,还是11不变;第二行printf输出的是(*p)++,是先输出再加1,由于第一个printf中已经使10变为11了(就是*p),所以这里先输出11,然后再给11+1==12,最后一个printf输出,自然是12。
孙毅超100
2019-05-30 · TA获得超过356个赞
知道小有建树答主
回答量:99
采纳率:0%
帮助的人:74.6万
展开全部
对于这种问题不能心急,咱们一条一条看:
首先,定义了整数型x数组,数组的首位数据是10;
后面定义了整数型指针px,并且指针的初始地址被指向数组的首位,也就是数据10所在的地址了;
好了,现在开始输出;
a. 第一句printf输出的是++*px,要搞清楚这里有哪些操作:
1)取数组首位地址中的数据,也就是10
2)进行加一,也就是11(注意!加一操作之后,数组的第一位数据不再是10,已经变成11)
3)进行输出(11)
b. 后面的printf输出,操作:
1)取数组首位地址中的数据,现在是11
2)进行输出(11)
c. 第二句printf输出的是(*p)++,操作(这一句之前有px=x,还是将px的指针指向了x数组的首位):
1)取数组首位地址中的数据,也就是11
2)进行输出(11,这里先输出,后加一)
3)进行加一,也就是12(注意!加一操作之后,数组的第一位数据不再是11,已经变成12)
d. 后面的printf输出,操作:
1)取数组首位地址中的数据,现在是12
2)进行输出(12)
所以,综上,所有的输出是11,11,11,12
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式