10.ポインタ

10-3. ポインタの使用例

ポインタの使用例と利便性のお話です。
というわけで今回はプログラミングに触れません(笑)。

◇ポインタの使用例

よくポインタを利用される場面として関数の呼出しの仮引数があります。
関数は実行結果を値として返す事ができますが2つ以上の結果が欲しい時には仮引数にポインタを使い呼び出す時に関数によって結果を格納する変数のアドレスを引数として渡します。
このように関数に間接参照させる事によって変数はスコープの壁を超えてアクセスする事ができます。(これについては次回解説します)

次に多いのが配列の代わりに使ってリスト構造を作る場合です。
これが結構難しくて他人の書いたプログラムだと解釈が大変です。(^^;;
リストにポインタを使う利点としては並び替え(ソート)やリストの挿入・削除ができることです。別にポインタを使わなくてもできないことは無いのですがポインタが並び順を記録するのと違ってリストを書きなおす作業が入ったりするのでデータが膨大になるとコンピュータに大きな負荷をかけてしまいます。

最後に構造体内での利用です。
ここまで使いこなす事ができればC言語で組めないプログラムはないでしょう。
上のリストと重複しますが多次元のリストをチェーン状に繋いだりする事ができます。

ポインタが難しいと言われるのは理論ではなくてその利用法だと思います。
ハッキリ申しますと関数・配列・構造体について基本的な事がわかっていないとポインタの利用方法がわからないし、ポインタを使い始めるとさらに関数などについて原理的な部分から再復習する必要性がでてきます。
しかしポインタを利用して得られるものは絶大です。オマケにバグの発生率も最大です(笑)。ポインタを使えば万能なプログラムが作れますがその万能さが諸刃の剣で使い方を誤ると「出力結果が違う」とか「ループが終わらない」といった程度では済まないことが起きます。運がよくてプログラムの強制終了最悪だとシステムのフリーズ・ダウン・クラッシュなどを引き起こします。
UNIX系のOSだとメモリ管理がしっかりしているのでそこまではならないと思いますが念のためサーバーに使われているマシンでの試行は避けたほうがいいと思います。(サーバーでアプリ開発する人はいないと思いますが…)