p156〜p196まで

次はポインタ周りじゃー!

ポインタと配列

配列を関数に引数として渡す場合、これでいけるのはしらなかった。

void func(int array[]);

int main()
{
  char n[10];
  func(n);
}

関数内でのarrayの使い方は普通のポインタと同じように使える。要するに、上のfunc関数は、

void func(int* array);

とまったく同じなんだとか。なので、配列のコピーを渡すわけではなく、普通に配列へのポインタを渡すわけだ。

[]演算子もまず使わんけど、こういう使い方ができるみたい。

2["hoge"];

これは結果としてgが返ってくる。普通はアドレス[インデックス]っていう感じで演算子は使われるが、インデックス[アドレス]と書くこともできるらしい。と、いうのも[]演算子の仕様は「A[B]は*(A+B)と等価である」ということだかららしい。まぁ、ほぼ使わないけどね。むしろこの仕様自体の方が大事。

const

最近仲のいいconstちゃんです。

ほほう。constは型のどの位置でも修飾できるんだ。int const unsignedみたいな。まぁ普通に型の前に修飾するけど。

4章終了

特にポインタ周りも収穫はそれほどなく・・・。昔はかなり苦戦してたけどなぁ。使っているうちに覚えてくるよねやっぱ。ただ、結局ポインタが難しいところって配列が絡んできたときに難しくなるわけで、この本みたいに*演算子が遅くでてくるような構成(配列とアドレスとの関連を先に説明している構成)だとはじめてでもそこまで混乱しないんじゃないかなーとか思った。