Shammer's Philosophy

My private adversaria

ポインタを堀り下げるその2

ポインタを堀り下げるその1 - Shammerismの続き。堀り下げるとか言ってもわかっている人からすればハア?何そのアタリマエのこと・・・みたいな感じなんだろうなぁ。まあ、そんなことはどうでもいい。自分がわかるようになることが重要なんだから。

ポインタに値を代入することについて確認。以下のように宣言された場合、

int *pointer;
pointer = 10;

コンパイルすると以下のようになる。

warning: assignment makes pointer from integer without a cast [enabled by default]

以下のようにすれば値を代入できる。

int *pointer;
*pointer = 10;

この例と、前回の例から以下のことがわかる。

  • ポインタ変数それ自体はメモリアドレスを代入するもの
  • ポインタ変数それ自体にメモリアドレス以外の値(整数とか)を代入しようとすると型が合わない警告が出る
  • ポインタの参照先に何かの値を代入したい場合は*を付けて代入すべし

頭で考えると混乱しやすいが、、、ここはガッチリ抑えないと後でさらに混乱することになりそうだ。なんか前もやった気がするけれど。