0

以下代码在我的系统上产生分段错误。我不知道为什么。任何帮助,将不胜感激。

#include<stdio.h>
int main() {
    char * a = "abc";
    *a = 'c';
    printf("%c\n", *a);
    return 0;
}
4

2 回答 2

6

该标准在 §J.2 中明确将此列为未定义行为:

— 程序尝试修改字符串文字 (6.4.5)

如果要将其复制到本地数组中,请执行以下操作:

char a[] = "abc";

a是栈上的一个数组,可以自由修改。

于 2011-03-04T04:50:42.253 回答
2

尝试修改字符串文字会导致未定义的行为。

于 2011-03-04T04:48:24.913 回答