手机版
你好,游客 登录 注册
背景:
阅读新闻

在C语言中*p++与(*p)++的区别

[日期:2016-10-30] 来源:Linux社区  作者:静水流深 [字体: ]

在C语言中*p++与(*p)++的区别

首先*p++等价于*(p++)。至于为什么会等价呢?根据c语言的优先级。*与++的优先级同处在第二级别上。他们的优先级是一样的,又因为处在第二级别的优先级运算符是结合方向是从右到左,所以当出现*p++这样的表达式的时候,根据优先级别相同,并且结合方向是从右到左,所以就等价于*(p++)了。那么也就是,先将p指针移动到下个p指针所指向元素的地址的下一个地址,然后再对那个地址取值。(*p)++是取p所指向地址的值,然后再将这个值+1.这里举个例子,比如

int x,y,a[]={1,2,3,4,5},*p=a,*q=a;

x=*p++;//执行这一句后x=a[1]=2,p=a+1

y=(*q)++;//执行这一句后,y=a[0]+1=2,q仍然=a

本文永久更新链接地址http://www.linuxidc.com/Linux/2016-10/136527.htm

linux
相关资讯       C语言 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款