最近发现使用const int 定义变量时若不设初始值,编译器会报错。然而使用const char* 时却不会,并且使用const char* 明明是const常量,却仍然可以修改其值。
int main()
{
const int b; //报错
const char* a;
a = "hjd";
a = "sdf"; //不会报错
}
发现原来是概念有些混淆,const char* 是常量指针,可以修改地址,不可修改指针指向的值,所以并未违背常量不可修改值的规定。这里由“hjd”变为“sdf”实际上是修改了指针a指向的地址。