c++ - 不理解++ 和 -- 的指针算术

标签 c++ memory pointers

所以,我正在通过 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/

相关文章:

c - 在 C 中的结构内初始化 char* 值

c - int *p = (int*) 60 是什么意思?

c++ - 如果一个类继承自纯基类,那么默认析构函数是什么?

c# - 使用MediaCapture进行实时流式传输

c++ - C++中的 friend 声明-公共(public)和私有(private)之间的区别

php - 使用 PHP 和 MySQL 生成最大的报告

c++ - 周期性时间间隔调用函数的API

linux - Linux下通过内存限制进程

c++ - 内存:编译器如何选择存储变量的位置?

c++ - 将链表从原始指针转换为智能指针