首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么带后缀运算符的去引用指针可以用括号表示,并且仍然可以得到先前的取消引用的值?

问为什么带后缀运算符的去引用指针可以用括号表示,并且仍然可以得到先前的取消引用的值?
EN

Stack Overflow用户
提问于 2015-01-09 17:55:11
回答 2查看 173关注 0票数 1

我不明白这里的先后顺序。给予:

代码语言:javascript
复制
*(p++)

以下是我认为会发生的事情:

代码语言:javascript
复制
(p++)

然后

代码语言:javascript
复制
*p

为什么p的地址没有先递增,然后取消引用,因为后缀在括号中?

代码语言:javascript
复制
*(p++)

为什么地址不增加,然后取消引用,因为括号。

*p++似乎与*(p++)不一样,但它们是相同的。

EN

回答 2

Stack Overflow用户

发布于 2015-01-09 18:02:50

在*(p++)中,p的值由p++递增,但p++的结果是增量之前的值,*应用于增量之前的值。括号是多余的,可以说是对语言不确定的人的标志。

如果要取消对增量值的引用,则需要预增量:

代码语言:javascript
复制
*(++p)
*++p

请注意,如果要增加p所指向的值,请使用:

代码语言:javascript
复制
(*p)++
++*p
++(*p)

最后两个是一样的,只是拼写不同。在这三个中的第一个中,括号是必需的;*p++是*(p++)而不是(*p)++。

票数 6
EN

Stack Overflow用户

发布于 2015-01-09 18:21:37

这与优先顺序无关。这是关于后缀增量是如何工作的。

在p++中发生的事情(假设p是这个简单示例的int* )是:

代码语言:javascript
复制
int* tmp = p; 
p = p + 1; 
return tmp; 

因此,您正在取消对p的原始值的引用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27866368

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档