将字符串文字分配给char []如何工作?

时间:2019-08-26 22:40:22

标签: c

我正在研究的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]’

1 个答案:

答案 0 :(得分:5)

通常,字符串文字存储在只读存储器中。但是,当您将字符串文字初始化为字符数组时,如第一个示例所示,它将被复制到字符数组中,该字符数组在只读存储器中为 not 。可以修改的字符数组;不是文字本身。