这两件事有什么区别

时间:2014-04-03 03:59:23

标签: c string char

我想知道为什么在尝试此操作时出现编译错误:

char *name = "some_string";

有了这个,我没有任何问题:

const char*name = "some_string";

char name[] = "some_string";

1 个答案:

答案 0 :(得分:2)

当你说

char *name = "some_string";

您正在声明指向"some_string"的指针,指针用于指出现有数据,此处的现有数据为"some_string",位于只读内存下。

所以const关键字很重要。

const char*name = "some_string"; //这是正确的方法

并在此声明后修改"some_string"是非法的并导致undefined behavior ...

当您说char name[] = "some_string";时,"some_string"将被置于只读内存下,同样会被复制到name[]数组。稍后您可以修改name[]

的内容

了解更多信息https://stackoverflow.com/a/18479996/1814023