尝试修改字符串时出现分段错误

Nir*_*dla 3 c

此代码在运行时给出了分段错误.

char *str = "HELLO";
str[0] = str[2];
Run Code Online (Sandbox Code Playgroud)

请有人能告诉我为什么吗?

Jef*_*ado 7

您无法修改字符串文字的内容.如果您希望能够这样做,请将其放入字符数组中.

char str[] = "HELLO";
str[0] = str[2];
Run Code Online (Sandbox Code Playgroud)


Wil*_*l A 7

你得到一个seg-fault,因为编译器已将字符串常量"HELLO"放入只读内存中 - 并且尝试修改字符串因此失败.