joh*_*nny 1 c++ pointers pointer-arithmetic
我不明白这里的优先顺序.鉴于:
*(p++)
Run Code Online (Sandbox Code Playgroud)
以下是我认为会发生的事情:
(p++)
Run Code Online (Sandbox Code Playgroud)
然后
*p
Run Code Online (Sandbox Code Playgroud)
为什么不是p
首先递增的地址,然后取消引用,因为后缀在括号中?
*(p++)
Run Code Online (Sandbox Code Playgroud)
为什么地址不会增加,然后由于括号而被解除引用.
*p++
似乎并不相同*(p++)
,但它们是相同的.
在*(p++)
,in 的值p
增加p++
,但结果p++
是增量前的值,并*
应用于增量前的值.括号是多余的 - 可以说是某人不确定语言的标志.
如果要取消引用递增的值,则需要预先递增:
*(++p)
*++p
Run Code Online (Sandbox Code Playgroud)
请注意,如果要增加p
点数,可以使用:
(*p)++
++*p
++(*p)
Run Code Online (Sandbox Code Playgroud)
最后两个是相同的,只是拼写不同.括号在这三个中的第一个是必要的; *p++
是*(p++)
不是(*p)++
.