为什么“char *”可以指向“const char *”?

时间:2011-10-02 03:17:24

标签: c char const

可以在VC或gcc上正确编译以下代码:

char *str = "I am a const!";
str[2] = 'n';

然而,显然存在运行时错误。因为“我是一个常客!”是一个 const char *,为什么编译器不会给出错误甚至是警告?


此外,如果我定义char a[] = "I am const!"a中的所有元素都可以修改,为什么这次字符串文字成为nonconst

1 个答案:

答案 0 :(得分:12)

就C而言,该字符串文字不是常量,它是一个char[14],它分配给一个char *,这是完全正常的。

但是,C确实说改变字符串文字是未定义的行为。