关闭

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

发表于:2016-11-01 10:07

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Linux公社    来源:51Testing软件测试网采编

  首先*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
《2023软件测试行业现状调查报告》独家发布~

精彩评论

  • w97711366
    2016-11-03 18:44:00

    这个例子用其他非序列的数据来讲解就更容易让人理解

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号