以下代码在 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(使用前将#替换为@)