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

2024-01-11

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

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

但是,显然存在运行时错误。因为“我是一个常量!”是一个常量字符*,为什么编译器不给出错误甚至警告?


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


就 C 而言,该字符串文字不是 const,而是一个char[14]您将其分配给 char* ,这完全没问题。

然而,C 确实表示更改字符串文字是未定义的行为。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么“char*”可以指向“const char*”? 的相关文章

随机推荐