为什么这段代码在" temp [2] =' X'?

时间:2016-02-20 20:36:11

标签: c

int main(void) {
char *temp = "ABCDE";
temp[2] = 'X';
printf("%s", temp);
return 0;
}

在gdb中我可以看到temp [2] =' X'导致崩溃。但为什么?有人可以回答吗?

1 个答案:

答案 0 :(得分:4)

字符串文字是不可修改的。它可以存储在内存的只读部分中,任何修改它的尝试都将导致未定义的行为。

如果您想修改它,请将temp声明为char的数组

char temp[] = "ABCDE";