C++ - *p vs &p vs p

标签 c++ pointers

我仍在努力理解 *p、&p 和 p 之间的区别。根据我的理解,* 可以被认为是“指向的值”,而 & 可以被认为是“地址”。换句话说,* 保存值,而 & 保存地址。如果这是真的,那么 *p 和 p 之间的区别是什么?难道 p 不是像 *p 一样保存某物的值吗?

最佳答案

* 运算符用于间接寻址。间接意味着 p 中的值被解释为内存地址,并加载该地址处的值。 pp的值,而*p是存储在p指向的内存位置的值。当你想间接访问一个整数i的值时,你可以让一个整数指针指向它(int *p = &i)并使用那个指针修改i 的值是间接的(*p = 10)。

关于C++ - *p vs &p vs p,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9661293/

相关文章:

c++ - ICMPv6 - 无法读取任何路由器通告消息

c++ - 程序意外退出,代码为 0xC0000417(无效的 C 运行时参数)

c++ - 使用 C++ 中的异步接口(interface)连接 Ada

c++ - 将正在运行的应用程序中的共享对象热更新到 Linux 上的新版本

c - 如何在 Swift 中复制指向数组的指针?

c++ - 为什么我不能在类外定义返回类型 'pointer to struct'的函数?

c++ - 使用动态数组初始化分配给其索引的默认值是什么?

c++ - Java 通配符在 C++ 中的等价物是什么?

c - 这种在 C 字符串中访问字符的方式如何工作?

c - 如何在不触发警告的情况下将整数值转换为指针地址