指针
发表在C语言图书答疑 2016-09-03
是否精华
版块置顶:
*p++是先取值,然后地址加1吗?
分享到:
精彩评论 2
again
学分:250 LV4
2016-09-03
沙发
理解这个问题,需要两点知识:
1.运算符优先级。
2.++运算符的计算顺序。
C语言运算符优先级中, * 和++运算属同一级,此时按照结合方向确定计算顺序;这两个运算符是 右到左 的结合方向,即当在同一个表达式中出现的这样的运算符,在没有括号的情况下,按照从右到左进行计算。 这样看这里就是先计算 p++, 再对结果完进行 *(即取值)运算。所以 *p++ 等同于 *(p++);
其中p++ 运算代表的意思是 先用后+,即先使用p,再进行自加运算,因此 (p++)这个表达式的结果为 p,
所以 *p++ 等同于 *(p++) 等同于 (*p, p=p+1)

最后 *p++ 要拆成两句来写,就是:
*p;
p= p + 1;
again
学分:250 LV4
2016-09-03
板凳
[FIELDSET][LEGEND]引自:1楼[/LEGEND]
理解这个问题,需要两点知识:
1.运算符优先级。
2.++运算符的计算顺序。
C语言运算符优先级中, * 和++运算属同一级,此时按照结合方向确定计算顺序;这两个运算符是 右到左 的结合方向,即当在同一个表达式中出现的这样的运算符,在没有括号的情况下,按照从右到左进行计算。 这样看这里就是先计算 p++, 再对结果完进行 *(即取值)运算。所以 *p++ 等同于 *(p++);
其中p++ 运算代表的意思是 先用后+,即先使用p,再进行自加运算,因此 (p++)这个表达式的结果为 p,
所以 *p++ 等同于 *(p++) 等同于 (*p, p=p+1)

最后 *p++ 要拆成两句来写,就是:
*p;
p= p + 1;
[/FIELDSET]

回复:
  解释了半天,就是你说的意思, 先取值(或付值) 指针再加1;
首页上一页 1 下一页尾页 2 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照