【发布时间】:2010-11-08 23:47:19
【问题描述】:
我已经多次使用这行代码(更新:当字符串是函数的参数时!),但是当我现在尝试这样做时,我得到了一个总线错误(包括 gcc 和 clang)。我正在重现最简单的代码;
char *string = "this is a string";
char *p = string;
p++;
*p='x'; //this line will cause the Bus error
printf("string is %s\n",string);
为什么我无法使用 p 指针更改字符串的第二个字符?
【问题讨论】:
-
gcc 有
-Wwrite-strings选项,它会警告您更改文字字符串,将它们设为const char[]。请注意,标准说文字字符串是char [](实际上是“read only char []”,但不是const),并且使它们成为const会使您的编译器(更多)不符合要求。