可能重复:
是否可以在 C 中修改 char 字符串?
char *s = "anusha";
这像一个常量指针吗?当我尝试通过写入来更改位置 3 中的字符时s[3]='k'
,它给了我一个分段错误。所以我假设它就像指向一个常量数组或者 s 是一个常量指针?两者中的哪一个?请说清楚。
可能重复:
是否可以在 C 中修改 char 字符串?
char *s = "anusha";
这像一个常量指针吗?当我尝试通过写入来更改位置 3 中的字符时s[3]='k'
,它给了我一个分段错误。所以我假设它就像指向一个常量数组或者 s 是一个常量指针?两者中的哪一个?请说清楚。
没错,您不允许修改字符串文字。
但是,这样做是合法的:
char s[] = "anusha";
s[3] = 'k'
这里的区别在于它存储为可以修改的本地数组。
看起来您的编译器将"anusha"
其视为指向 的指针char
,但将字符串本身放入受写保护的内存中。我记得读过这是为了遵守现有代码的便利政策。
正如乔所指出的,这在是否可以在 C 中修改字符串?.