ラーメン屋で隣に座った熟年カップルが大声でポインタの話をしていた

…なんて訳はなくタイトルはホッテントリメーカーで一番最初に出てきたので。
よく考えたらCの一番の壁ってポインタじゃね??って思ったので、
自分がポインタ何となく理解できるようになるまでを思い出しながらメモ。

ポインタを理解するには

まあ結論から言うと習うより慣れろなんですけど。
それ以外に何かあるとすれば、「ポインタって所詮は変数」ってのを頭の片隅に入れておくと良いかもしれない、と言う事。
そんで、自分はなるべくポインタ変数宣言する時には

char **argv

じゃなくって、

char** argv

って書くようにしてました。
上の書き方だと、argvが一体何なのかよくわかんないけど、下の書き方なら「あー、argvは"char**"型の変数なのねー」って思えるような気がするので…

リスト/ツリーを使ったプログラムを書いてみる

JAVAだと最初からListとか用意されているので、それを使えば良いのだけれども、Cの場合そういう便利なライブラリが用意されている訳ではないので必要な場合は自前で作らないといけないです。リスト構造(なんでリストなのかっていうと、ツリーとかハッシュに比べて作るのが簡単なので)を実装する為には多分ポインタ使わないと無理なので、ポインタ理解の良い練習になると思われます。まあ要するに習うより(ry

絵を描いてみる

ありきたりですが、わからなくなったらお絵描きしてみるのも手かもしれないです。

    char* str = "hello";

ってなってる場合は、

みたいな感じで。
まあ要するに(ry

結論
  • ポインタは変数
  • リスト構造とか使ったプログラムしてみるとよい
  • わからなくなったら絵に描いてみる
  • 習うより慣れろ

そんな感じですかね…