C语言的一个小小的PROBLEM

(1)#include"stdio.h"main(){inta[2]={1,9},*p=a;printf("%d,",(*p)++);printf("%d,",*p);}... (1)#include"stdio.h"
main()
{int a[2]={1,9},*p=a;
printf("%d,",(*p)++);
printf("%d,",*p);
}
结果是1,2
(2)#include"stdio.h"
main()
{int a[2]={1,9},*p=a;
printf("%d,",*(p++));
printf("%d",*p);
}
结果是1,9
请问是不是考虑这个问题的结果的时候++这个运算可以先去掉不看(2个程序第一个的输出结果都是1),得出结果之后再把++放回来看++运算在哪里了,是地址还是内容++了,可以这样想吗?可是既然括号的优先级最高为什么第二个程序结果不是9,9呢?
展开
 我来答
百度网友7b61185ae
2009-08-31 · TA获得超过267个赞
知道小有建树答主
回答量:227
采纳率:0%
帮助的人:196万
展开全部
++运算符放在变量后面的时候,是要求表达式先参与运算,而后表达式自增。
你说的没错。
1),p先取内容,输出,而后内容自增。
相当于这么写:printf(“%d”,*p); p++;
2),p先取内容,输出,而后地址自增。
相当于这么写:printf(“%d”,*(p));p++;
所以括号有没有都一样。
假设还是如果
2009-08-31 · TA获得超过257个赞
知道答主
回答量:279
采纳率:0%
帮助的人:284万
展开全部
(*p)++是里面的值递增了
*p++,*(p++)是一样的效果,++的优先级大于*的

为什么第二个程序结果不是9,9
*(p++)这个表达式返回*p的值,在把p加1
printf函数得到是一个临时的值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhangyafei3020
2009-08-31 · TA获得超过418个赞
知道小有建树答主
回答量:474
采纳率:0%
帮助的人:0
展开全部
*(p++)
指针指向的地址变了,指向了a[1]
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tang803397
2009-08-31 · TA获得超过826个赞
知道小有建树答主
回答量:811
采纳率:0%
帮助的人:776万
展开全部
第一个程序 (*p)++ 是使得a中第一个元素自加了 也就是1+1=2了
printf("%d,",*p);这条语句p所指向的数据始终是a中第一个数据
第二个程序*(p++) 是使得p指向下一个元素 也就是说printf("%d",*p);这条语句的p已将指向a中第二个元素了 也就是9
所以 第二个程序*(p++) 是地址++了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Gimfungio
2009-08-31 · TA获得超过2669个赞
知道小有建树答主
回答量:1126
采纳率:0%
帮助的人:877万
展开全部
++,自加运算符,a=p++就是 先进行a=p的赋值计算,完了之后再p加上1。
这里(*p)++,是先取地址p的值进行打印,然后值+1,下次用的时候就是值+1后的内容了。
*(p++),是先将地址p的值打印,然后地址+1,下次用的时候就是地址+1后的内容了。
这里有无()的区别在于取p的值进行自加还是取p的地址进行自加。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hendlon
2009-08-31 · TA获得超过296个赞
知道小有建树答主
回答量:544
采纳率:100%
帮助的人:406万
展开全部
我来说两句。

先说明 *p=a;a 是数组名,*p实际上指向数组a[2]的首地址(数组名其实是一个指针,指向数组的首地址),其实也就是指向数组元素a[0],

1中,(*p)++ 等效于 a[0]++ 先使用再自加,所以先输出a[0](即为1)
再输入a[0]自加后的值,即为2

2中,*(p++) p是指向数组a的地址,先使用再自加,刚先输出*p,即a[0](值为
1),然后,p指向的地址往后挪一个字节,这时第二句输出时,*p指向的已经不是a[0]了,而是a[1]了,也就是9.

不知道有没有说明白。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式