*p++与(*p)++有什么区别

 我来答
wmcchen
2011-09-17 · TA获得超过495个赞
知道小有建树答主
回答量:64
采纳率:100%
帮助的人:58.4万
展开全部
楼主可以去看看c语言优先级有关的知识。首先*p++等价于*(p++)。至于为什么会等价呢?根据c语言的优先级。*与++的优先级同处在第二级别上。他们的优先级是一样的,又因为处在第二级别的优先级运算符是结合方向是从右到左,所以当出现*p++这样的表达式的时候,根据优先级别相同,并且结合方向是从右到左,所以就等价于*(p++)了。那么也就是,先将p指针移动到下个p指针所指向元素的地址的下一个地址,然后再对那个地址取值。(*p)++是取p所指向地址的值,然后再将这个值+1.这里举个例子,比如
int a[2]={1,10};
int *p=a;
*p++//的结果就是等于数组的第二个元素10.
(*p)++//的结果就是1+1=2.
楼主,我这样解释,把意思讲明白了么?
My空心果
推荐于2017-09-27 · TA获得超过1290个赞
知道小有建树答主
回答量:753
采纳率:0%
帮助的人:625万
展开全部
*p++是使指针变量p本身增1。
(*p)++是使指针所指的存储单元的内容增1。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
行行行817
推荐于2017-10-05 · TA获得超过137个赞
知道答主
回答量:35
采纳率:0%
帮助的人:22.9万
展开全部
C编译器认为*和++是同优先级操作符,且都是从右至左结合的,所以*p++中的++只作用在p上,和*(p++)意思一样;在(*p)++中,由于()的优先级比*和++都高,所以++作用在()内的表达式*p上。比如有:
int x,y,a[]={1,2,3,4,5},*p=a,*q=a;
x=*p++;//执行这一句后x=a[0]=1,p=a+1
y=(*q)++;//执行这一句后,y=a[0]+1=2,q仍然=a
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
楠流泪康cc3b4
2011-09-17
知道答主
回答量:27
采纳率:0%
帮助的人:12.8万
展开全部
一个是指针的位置自增,一个是自增后作为新的指针地址。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
metatoron
2015-10-07
知道答主
回答量:43
采纳率:0%
帮助的人:27.3万
展开全部
第一个是指针偏移一位(看数据类型和平台)然后取值,
第二个是指针指向内存存储的值自增。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式