c++ - 为什么 int *const p1;在 int *p1; 工作正常时导致错误?

标签 c++ pointers constants lvalue rvalue

我是 C++ 的新手,正在尝试学习指针的概念。我很困惑为什么第三个和第四个语句会导致错误,而第一个和第二个语句工作得很好。

int *p1; //Ok
const int *p1;//Ok
int *const p1; //error: default initialization of an object of const type 'int *const'
const int *const p1; //error: default initialization of an object of const type 'const int *const'

PS:我知道在声明它们时初始化所有指针或至少将它们的值设置为 nullptr 或 0 是一种很好的做法。我问这个问题是因为我想了解它背后的概念。

最佳答案

最后两个语句声明指针本身是常量。你没有给他们值(value)观。这使得它们非常无用,因为它们永远无法更改(如果它们是堆栈或类成员变量,它们甚至没有像 NULL 这样的定义值,所以它们实际上是无用的).

关于c++ - 为什么 int *const p1;在 int *p1; 工作正常时导致错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34801750/

相关文章:

c++ - 返回模板的嵌套类时出现语法错误

c++ - valgrind 输出中的数字是什么意思?

我可以通过同时索引 c 中的两个矩阵来将矩阵的值传递给另一个矩阵吗?

Const 多维数组

c++ - 给定一个素数列表和一个因式分解模式,如何构造其素数分解与给定模式匹配的所有数字?

c++ - 使用位移位定义的宏值

pointers - 如何修改结构指针类型的接口(interface)值

c++ - 为什么未分配的 int 有值?

c - 分配给 const int *

c - 如何声明一个全局const变量并用C中的函数初始化它?