不理解使用++和 - 的指针算法

Vin*_*tch 5 c++ memory pointers

所以,我通过http://cplusplus.com/doc/tutorial/pointers/了解指针,我对指针运算部分一无所知.有人可以清理一下或指向我这方面的教程,我可能会更好地理解.

我与喜欢之间的区别所有的括号的东西特别迷茫*p++,(*p)++,*(p++),等.

N_A*_*N_A 4

*p++

对于这个,++具有更高的优先级,*因此它会将指针递增 1,但会检索原始位置的值,因为后递增返回指针,然后递增其值。

(*p)++

这会强制另一个方向的优先级,因此首先取消引用指针,然后将该位置处的值加一(但返回原始指针位置处的值)。

*(p++)

这一个首先递增指针,因此它的作用与第一个相同。

需要注意的重要一点是,指针递增的量受指针类型的影响。从您提供的链接:

char *mychar;
short *myshort;
long *mylong;
Run Code Online (Sandbox Code Playgroud)

char长度为一个字节,因此++指针加 1(因为指针指向每个字节的开头)。

short长度为两个字节,因此将++指针增加 2,以便指向下一个短字节的开头而不是下一个字节的开头。

long长度为 4 个字节,因此++指针增加 4。

  • 这个答案混淆了前增量和后增量。 (4认同)
  • 这个答案提出的第一点就大错特错了。虽然 ++ 确实比 * 具有更高的优先级,但后缀 ++ 故意返回递增之前的点的值,以便 *p++ 检索未递增位置处的值。请解决这个问题。 (3认同)
  • Short 不一定是两个字节的长度。它是短字节的大小。同样,long 是长字节的大小。 (2认同)