我有点困惑为什么以下爆炸:
char* c = "Hello World!";
*c = 'h';
Run Code Online (Sandbox Code Playgroud)
当我在堆上分配字符串时它起作用.所以我只是好奇我的初始版本有什么问题.
char* c = "Hello World!";
是指向字符串文字的指针,通常存储在只读内存段中.试图修改它是未定义的行为.像这样的字符串文字的指针应该更恰当地定义为
const char *c = "Hello World!";
Run Code Online (Sandbox Code Playgroud)
但const
经常省略(至少在C中).