c++ - 使用带有 const 的双指针

标签 c++ pointers constants

假设我们有

int *p1;
const int **pp2= &p1;
const int n=13;

//这意味着我们不能使用 pp2 修改地址存储在 * pp2 中的//变量的值。 * pp2 存储一些变量的地址(在下面的例子中是 n)

我正在阅读的书 -C++ primer 说以下声明是完全合法的

*pp2=&n;

我觉得上面的说法违反了上面评论中写的事情。

有人可以帮忙解决这个问题吗?非常感谢

最佳答案

用一个简单的例子来帮助理解它。当您在下面编写声明时:

const int *p;

它说 *p 是常量而不是 pp可以存储任何指向常量整数的地址。

类似地,const int **p; 表示指向常量 int 的指针。您可以更改 p*p 但不能更改 **p*p 可以保存任何指向常量整数的地址,如 &n 在您的情况下,您可以将 *P 更改为任何指向常量整数的地址。

关于c++ - 使用带有 const 的双指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40703350/

相关文章:

c++ - 重载函数未使用:

c++ - 在特定场景中指针取消引用和强制转换之间的关系不明确

objective-c - 关于 Objective-C 中的指针

C. 传递要修改的指针导致段错误

C++ 使用 const 引用覆盖 +=

arrays - 在 Rust 中,我可以在不对值进行硬编码的情况下实例化我的 const 数组吗?编译时评估?

c++ - 如何使从函数返回的数字用于定义数组中的元素数?

c++ - 构建静态库 (.lib) VS 2010 Pro

c++ - 实现质数计数器

c++ - 如何从文本文件中删除特定点之前的所有行和单词