charの配列・ポインタと文字列(文字列リテラル)について

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 = みたいな代入はもちろん不可

 

comments

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*