这就是我所拥有的:
const int x = 10;
int *ptr = &x; //error: 'initializing': cannot convert from 'const int *' to 'int *'
我知道x
在初始化后无法修改,我知道如何修复此编译问题,但为什么我不能使用指针(在本例中为ptr
)指向{ {1}}?
虽然它是x
,但我不明白为什么我不能指出它的原因,因为我仍然可以使用const int
代表*ptr
,对吧?
答案 0 :(得分:4)
因为ptr
属于int*
类型,即它指向非const int
。这允许您使用ptr
修改*ptr
。为防止修改const
变量,编译器会阻止对非const指针的初始赋值。
将ptr
指向const int
自然会解决问题:const int* ptr = &x;