c-lang:構造体
構造体(structure)
複数の変数をまとめて扱う事を可能とする。
関数の引数が多い場合は、構造体にまとめるとすっきりする。
また、構造体を使う事で変数の数を減らし、プログラムを読みやすくすることができる。
他の言語では、「レコード」と呼ばれていたりする。
構造体を使うと、なんだかよく分からないが、すごいプログラムに見える。
構造体には可読性が低下しやすいという罠がある。
構造体の宣言
code:cpp
struct 構造体名{
データ型 フィールド名;
データ型 フィールド名;
:
:
} 変数名;
構造体タグ(タグ名)
code:cpp
struct タグ名 { メンバのリスト };
メンバ
code:cpp
データ型 メンバ名;
構造体定義と別名定義を同時に行う
code:cpp
typedef struct {
データ型 フィールド名;
データ型 フィールド名;
:
:
} 別名;
typedefしておかないと構造体を使用するとき毎回structと記述する必要があるため、typedefで型定義しておくことが多い
構造体の初期化
code:cpp
sutruct ToyCan_tag {
unsigned char1000 type;
point;
} ToyCan = {"銀", 1}
sutruct ToyCan_tag {
unsigned char1000 type;
point;
} ToyCan[]= {
{"はずれ", 0},
{"銀", 1},
{"金", 5}
};
構造体へのアクセス
変数名.フィールド名
code:cpp
(*sp).hogehoge == sp->hogehoge
入れ子の構造体
構造体は、そのメンバに別の構造体を含むことができる。
構造体を使ったコピー
code:cpp
struct String{ char s1000; /* 文字列 */ } sStr1,sStr2;
と定義しておくと、 sStr1 = sStr2; で、文字列のコピーができる。
コンパイルする時点で、コピーする サイズがわかっているから、より効率のよいコードにおちる。
それよりもなによりもプログラムが読みやすくなる。
再帰データ型(Recursive Type)