fenri's diary

基本的には勉強し始めたC#のメモ。後は140字で収まらない駄文。

ポインタ関連のメモ

ポインタの場合、先頭アドレスは変数で自由に書き換えができますが、配列名の示す先頭アドレスは書き換えができない

www.mgo-tec.com



char* c1;
c1 = "abcdefg";

ダブルクォーテーションで囲んだ文字列は、コンパイラが文字列をメモリ上の書き換え不可の特別な記憶領域に定数として格納し、
そのポインタの先頭アドレスを返している

char c2[8] = “abcdefg”;

配列の初期化の場合は一文字ずつ読み書き可能なメモリ領域へ格納して、最後に ’\0’ を付加します。


●初期化と、型宣言後の代入は、プロセスが異なる。
●ダブルクォーテーション囲み文字列(文字列リテラル)は基本的に書き換えできない領域に記憶され、そのポインタ先頭アドレスを返す。
●配列名は先頭要素アドレスを返すだけで、ポインタのようにアドレス書き換えはできない。