为什么我不能用const int

时间:2016-05-15 17:45:37

标签: c++ visual-studio-2010

这就是我所拥有的:

const int x = 10;
int *ptr = &x; //error: 'initializing': cannot convert from 'const int *' to 'int *'

我知道x在初始化后无法修改,我知道如何修复此编译问题,但为什么我不能使用指针(在本例中为ptr)指向{ {1}}?

虽然它是x,但我不明白为什么我不能指出它的原因,因为我仍然可以使用const int代表*ptr,对吧?

1 个答案:

答案 0 :(得分:4)

因为ptr属于int*类型,即它指向非const int。这允许您使用ptr修改*ptr。为防止修改const变量,编译器会阻止对非const指针的初始赋值。

ptr指向const int自然会解决问题:const int* ptr = &x;