charの配列と
charのポインタの文字列の扱い方について
私の只のメモなんで,分かり難くても知らないです><!
char * str = “abc”;
この”abc”は,メモリの定数領域に確保されたものだから
例えば,
char *str1 = “abcd”;
char *str2 = “abcd”;
とした場合,機器にもよるが”abcd”のアドレスは同値となる。
この時,
str1[0] = ‘b’;のように書くことはできるが,
実行すると例外を吐き出されるので注意(やらん方がいいってことで)
続いて,
char str1[] = “abcd”;
char str2[] = “abcd”;
とした場合,スタック領域に値が一つ一つ入れられるので
この場合の”abcd”は{‘a’,’b’,’c’,’d’,”}の略でしかない
ので,中の値を書き換えることに何の問題もない。
但し,配列のため
str1 = みたいな代入はもちろん不可