構造体の種類

オブジェクト

  • 値の集まりとして意味のあるもの。
  • 実物を模している場合もあれば、抽象的な概念モデルの場合もある。
  • ほとんどのクラスと構造体はこれに該当する。
struct complex {
    double x;
    double y;
};

Options

  • ある関数に与える引数が多に場合にひとまとめにするための構造体。
  • 引数は呼び出し側では順序でしか区別できないため、同じ型の引数が複数ある場合に間違えやすい。しかし、構造体を使って渡せば、順序ではなく名前を使って指定できる。
  • その関数で必要であるというだけで、特にそれ以上のまとまりのないモノをひとまとめにしているケースが多いため、なんでこうなっているんだろうと考えることにあまり意味がないケースが多い。
struct tcp_option {
    char* ip_address;
    unsigned short port;
};

コレクション

  • 複数の値 (多くの場合同じ型) をひとまとめにしたもの。

別名

タプル

  • 複数の値をまとめて扱いたいときに使う。型が異なっていても良い。
  • 主に関数から複数の値を同時に返したい場合に使う。
  • 言語の機能として提供されているものもある。逆に言語の機能として提供されていない場合にはあまり使わない。