我相信在C99中,字符串文字的修改是未定义的行为。我没有该标准的副本,但确实有C1X(n1570)草案,该草案在6.4.5第7段中规定:
我发现了涉及该主题的Stack Overflow question,其中包含Jonathan Leffler的以下评论:
但是我也看到了很多关于字符串文字类型的讨论,以及它们是char[N]
而不是const char[N]
的事实。我收集到此决定是为了使现有代码的大部分不会中断。
谁能给我一个明确的答案。 C89中的字符串文字修改UB是吗?
最佳答案
是的,它们在C89中不可修改。
即使在K&R第二版中,也有关于字符串文字不变性的引号。
在ANSI C89基本原理中,有一个解释为什么它不可修改:
关于c - 字符串文字的修改是否符合C89标准的未定义行为?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10001202/