以下代码在我的系统上产生分段错误。我无法弄清楚为什么。任何帮助,将不胜感激。
#include<stdio.h>
int main() {
char * a = "abc";
*a = 'c';
printf("%c\n", *a);
return 0;
}
答案 0 :(得分:6)
标准明确将此列为§J.2中的未定义行为:
- 程序尝试修改a string literal(6.4.5)
如果要将其复制到本地数组中,请执行以下操作:
char a[] = "abc";
a
是堆栈中的数组,您可以自由修改它。
答案 1 :(得分:2)
尝试修改字符串文字会导致未定义的行为。