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 に答える