我正在研究的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]’
。
答案 0 :(得分:5)
通常,字符串文字存储在只读存储器中。但是,当您将字符串文字初始化为字符数组时,如第一个示例所示,它将被复制到字符数组中,该字符数组在只读存储器中为 not 。可以修改的字符数组;不是文字本身。