关于const char * 和const int的一个小问题

最近发现使用const int 定义变量时若不设初始值,编译器会报错。然而使用const char * 时却不会,并且使用const char * 明明是const常量,却仍然可以修改其值。

int main()
{
  const int b;    //报错
    const char * a;
    a = "hjd";
    a = "sdf";      //不会报错
}

发现原来是概念有些混淆,const char * 是常量指针,可以修改地址,不可修改指针指向的值,所以并未违背常量不可修改值的规定。这里由“hjd”变为“sdf”实际上是修改了指针a指向的地址。

posted @ 2020-07-29 15:23  无发可理的理发师  阅读(331)  评论(0编辑  收藏  举报