|
>ポインタ、構造体の勉強をし、内容をある程度把握できるのですが、
>これといった使い道、利点などが分かりません。
ほとんどの場合,ポインタや構造体は代替手段がありません。
ある程度以上の大きさのプログラムを組んでいくと,
使い道や利点は自ずとわかると思います。
構造体に関しては,C MAGAZINEの2003年9月号で特集されていました。
バックナンバーは探せば見つかると思いますし,C MAGAZINEのWebページからも購入できます。
http://www.Cmagazine.jp
なので,ポインタに関して書いておきます。
- 使い方
- 引数の内容を関数側で書き換えて,それを呼び出し側に戻したいとき。
- 構造体・関数・配列を関数に引き渡すとき。
- malloc等の記憶域管理関数で得たオブジェクトを保持するとき。
- アルゴリズム自体に変更が無く,外部の状態によって対応する変数・関数が異なるとき。
- 実装に関わる情報を隠蔽したいとき(不完全型へのポインタ)。
- 配列を順番にアクセスするとき。
- 利点
- C言語では唯一の方法。
- 関数・配列に関しては,C言語では唯一の方法。
構造体の場合,実体を渡すことによる記憶域(一般にはスタック)を無駄に消費せず,コピーによる時間も節約できる。
- C言語では唯一の方法。
- if文によってアルゴリズムがアルゴリズム自体と無関係なif文に埋もれることが避けられる。
- 実装を隠蔽できること自体が大きな利点。
- C言語では最近あまり利点はない。C++言語ではtemplateとの絡みで重要。
|