伊谢尔伦2017-04-17 15:20:09
これを実行してもエラーは報告されませんが、p が指す文字列 123
を変更しようとすると、メモリ アクセス違反が発生します。 「123」は文字列定数であるため、読み取り専用の記憶領域に保存されます。 const char*
が必須の理由は、プログラマーが誤って 123
を変更するのを防ぐためです。
PHPz2017-04-17 15:20:09
初心者向けの回答
「123」は const char 型のオブジェクトです。 const char * p は右から左に読む必要があります。これは、p がポインターであり、指すオブジェクトが const char 型であることを意味します。これは正しくありません。 同様に、p が指すオブジェクトが const char である限り、最後に p = "456"; を追加しても問題ありません。
大家讲道理2017-04-17 15:20:09
char *p = "123"; 実際には、定数領域に文字列領域を確保し、文字ポインタ p を宣言し、文字列が配置されているメモリ領域を指す 2 つの処理になります。すぐに修正してください