17
「char s []」ではなく、文字列リテラルで初期化された「char * s」に書き込むときに、セグメンテーション違反が発生するのはなぜですか?
次のコードは、2行目でsegフォルトを受け取ります。 char *str = "string"; str[0] = 'z'; // could be also written as *str = 'z' printf("%s\n", str); これは完璧に機能しますが、 char str[] = "string"; str[0] = 'z'; printf("%s\n", str); MSVCおよびGCCでテスト済み。