无法使用 'const int *' 类型的右值初始化 'int *const' 类型的变量
Cannot initialize a variable of type 'int *const' with an rvalue of type 'const int *'
为什么我有以下代码的错误:
const int r = 3;
int *const ptr = &r;
但是,如果我将 r 定义为普通 int,它会正常工作。据我了解,第二行只是将指针ptr定义为一个const,也就是说这个指针的值是不能改变的。但是为什么我一个const指针不能指向一个const int?
int *const ptr = &r;
使 ptr
成为指向 非常数 int
.
的常量指针
也就是说,虽然变量 ptr
本身无法修改(您不能将其赋值给 ptr
),但它指向的内容可以。这与常量 r
的类型不匹配。
如果你想要一个指向常量 int 的常量指针,你需要:
int const* const ptr = &r;
现在既不能修改变量ptr
,也不能修改它指向的数据。
为什么我有以下代码的错误:
const int r = 3;
int *const ptr = &r;
但是,如果我将 r 定义为普通 int,它会正常工作。据我了解,第二行只是将指针ptr定义为一个const,也就是说这个指针的值是不能改变的。但是为什么我一个const指针不能指向一个const int?
int *const ptr = &r;
使 ptr
成为指向 非常数 int
.
也就是说,虽然变量 ptr
本身无法修改(您不能将其赋值给 ptr
),但它指向的内容可以。这与常量 r
的类型不匹配。
如果你想要一个指向常量 int 的常量指针,你需要:
int const* const ptr = &r;
现在既不能修改变量ptr
,也不能修改它指向的数据。