所以,我正在通过 http://cplusplus.com/doc/tutorial/pointers/ 学习指针我对指针算术部分一无所知。有人可以把事情弄清楚,或者给我指点一个我可能会更好理解的教程。
我对括号中的所有东西特别困惑,比如 *p++
、(*p)++
、*(p++)
之间的区别> 等
最佳答案
*p++
对于这个,++
比 *
有更高的优先级,所以它将指针递增 1 但在原始位置检索值,因为后递增返回指针然后递增它的值。
(*p)++
这强制了另一个方向的优先级,因此首先取消引用指针,然后该位置的值递增 1(但返回原始指针位置的值)。
*(p++)
这一个首先递增指针,因此它的行为与第一个相同。
需要注意的重要一点是,指针递增的数量受指针类型的影响。从您提供的链接:
char *mychar;
short *myshort;
long *mylong;
char
的长度为一个字节,因此 ++
将指针增加 1(因为指针指向每个字节的开头)。
short
的长度为两个字节,因此 ++
将指针增加 2,以便指向下一个 short 的开头而不是下一个的开头字节。
long
的长度为四个字节,因此 ++
将指针增加 4。
关于c++ - 不理解++ 和 -- 的指针算术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8215407/