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



我正在阅读的 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]’错误。

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

最新更新