在c中修改char指针的值会产生段错误

时间:2011-03-04 04:47:17

标签: c pointers char dereference

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

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

2 个答案:

答案 0 :(得分:6)

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

  

- 程序尝试修改a   string literal(6.4.5)

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

char a[] = "abc";

a是堆栈中的数组,您可以自由修改它。

答案 1 :(得分:2)

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