0

可能重复:
为什么 char* 会导致未定义的行为,而 char[] 不会?

请看下面的代码

int main (int argc, char* argv[])
{   
    char* s = "Hello world!";
    s[0] = 'X';
    return 0;
}

这段代码中的段错误来自哪里?

更新: 相反,下面的代码没有给出段错误,为什么?

int main (int argc, char* argv[])
{   
    char s[] = "Hello world!";
    s[0] = 'X';
    return 0;
}
4

1 回答 1

3

"Hello world!"是一个静态字符串,你不能改变它。

于 2012-12-24T02:44:11.580 回答