我正在阅读的 C 书说字符串文字是常量,但是当我将它们分配给字符数组时,可以为单个字符分配新值。字符串文字是否在分配期间转换为其他内容?它们不是固有的恒定吗?
阅读其他一些StackOverflow答案,有人说这应该会导致错误,所以我无法弄清楚它为什么有效。
运行
char string[12] = "hello world";
string[5] = '-';
printf(string);
打印hello-world
.
运行
"hello world"[5] = '-';
导致编译期间error: assignment of read-only location ‘"hello world"[5]’
错误。
通常,字符串文本存储在只读内存中;但是,当您将字符串文本初始化为字符数组时(如第一个示例所示(,它将被复制到字符数组中,该数组不在只读内存中。它是可以修改的字符数组;不是文字本身。