假设我们有
int *p1;
const int **pp2= &p1;
const int n=13;
//这意味着我们不能使用 pp2 修改地址存储在 * pp2 中的//变量的值。 * pp2 存储一些变量的地址(在下面的例子中是 n)
我正在阅读的书 -C++ primer 说以下声明是完全合法的
*pp2=&n;
我觉得上面的说法违反了上面评论中写的事情。
有人可以帮忙解决这个问题吗?非常感谢
最佳答案
用一个简单的例子来帮助理解它。当您在下面编写声明时:
const int *p;
它说 *p
是常量而不是 p
。 p
可以存储任何指向常量整数的地址。
类似地,const int **p;
表示指向常量 int 的指针。您可以更改 p
和 *p
但不能更改 **p
。 *p
可以保存任何指向常量整数的地址,如 &n
在您的情况下,您可以将 *P
更改为任何指向常量整数的地址。
关于c++ - 使用带有 const 的双指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40703350/