Cの次のコードが機能するのはなぜですか?
const char* str = NULL;
str = "test";
str = "test2";
strは定数文字へのポインタなので、なぜ異なる文字列リテラルを割り当てることができるのでしょうか。さらに、strが変更されないようにするにはどうすればよいですか?たとえば、後でstrをより長い文字列に割り当てた結果、メモリの別の部分に上書きされた場合、これは問題になる可能性があります。
テストでは、各割り当ての前後にstrのメモリアドレスを出力しましたが、変更されることはありませんでした。したがって、strはconst charへのポインタですが、メモリは実際に変更されています。おそらくこれはCのレガシー問題なのだろうか?