みたにっき@はてな

三谷純のブログ

文字リテラル

C/C++言語の話。

char *str = "hogehoge";

char str[] = "hogehoge";

って、今まで同じことだと思っていたのですが、実は違うのですね。。
長年プログラミングしてきて、初めて知りました。がーん。ショック。
考えてみたら、今までのプログラミングで文字列を扱うことってあまりなかったし。。という言い訳は別にして、前者のようなコードでstr[0]='a'とすることができなくて、なんでなのかと頭を悩ませてしまいました。
このような現象は処理系に依存するようですが、この手の問題は一度経験しておかないと、なかなか原因が気づかないものです。

こちらの下の解説が参考になるかも。