#include <stdio.h>
int main() {
char *name = "Thank you";
name[0] = 'a';
printf("%s", name);
}
它工作正常:
我的理解是 name[0] = 'a'
不应该起作用。
那么它为什么有效?
最佳答案
C 标准对尝试修改字符串文字没有施加任何限制。但是,如果您尝试修改字符串文字,结果是 undefined behaviour .
引用 C11
,第 6.4.5 章(字符串文字)/P7
[...] If the program attempts to modify such an array, the behavior is undefined.
您认为程序允许您修改字符串文字的内容这一事实是 UB 的众多结果之一。
关于c - 为什么我可以使用 CLion 修改字符串文字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63915526/