我想知道为什么在尝试此操作时出现编译错误:
char *name = "some_string";
有了这个,我没有任何问题:
const char*name = "some_string";
或
char name[] = "some_string";
答案 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[]
。