-2

重複の可能性:
この C コードがセグメンテーション違反を引き起こしているのはなぜですか?

char array[6] = "kapil";  
array [0] =  'K';    

このコードは正常に実行されます。
しかし、次のコードはセグメンテーション違反を引き起こしますか?

char* array = "kapil";  
array [0] =  'K';   

なぜ最初にセグメンテーション違反が発生しないのですか。

4

2 に答える 2

3

char* array = "kapil";文字列リテラルを宣言し、 と同等const char*です。これは読み取り専用メモリに存在する可能性があり、変更できません。

厳密に言えば、それを変更しようとすると未定義の動作が発生しますが、実際にはセグメント障害が発生する可能性があります。

于 2012-12-19T13:48:30.100 に答える
1

char* array = "kapil";kapilこのタイプの宣言を使用すると、読み取り専用コンテキストでコピーされ、その内容を変更できます。

于 2012-12-19T13:50:30.217 に答える