[[C言語講座]] #markdown{{ #構造体とユーザー定義型 ##構造体 配列では特定の型を複数まとめて扱うことができました。しかし逆を言うと一つの型しかまとめることができませんでした。 そこで複数の型の変数をひとかたまりとして扱う機能があります。それが構造体です。 ###構造体の宣言 struct 構造体名 { 型 変数名; . . . }; 例 struct roll { char name[32]; int birth; int zip; char address[82]; char tell[20]; }; ###構造体の使用方法 ####変数の宣言 struct 構造体名 変数名; 例 struct roll data; ####メンバの操作 構造体内の変数のことをメンバといいます。 変数名.メンバ名 例 data.zip=234253; printf("%d\n",data.zip); ####代入 同じ構造体名で作った変数同士で可 変数名 = 変数名; 例 struct roll a,b; a=b; struct roll2 c; a=c; <-はできない ####ネスト 構造体の中に構造体を入れることが可能 例 struct roll { char name[32]; int birth; int zip; char address[82]; char tell[20]; }; struct member { struct roll base; char belong[20]; }; 使い方 struct member data; data.base,zip=324454; ####初期化 struct 構造体名 変数名 = { 値, . . . }; 例 struct roll data { "Hinako", 19890225, 1234567, "Yokohama-shi, Kanagawa Pref.", "045-123-1567", }; ####配列とポインタ 例 配列 struct roll data[10]; data[2].zip=1245978; ポインタ struct roll *data; data->zip=1215544; これは以下と等価である (*data).zip=1215544; ####関数の戻り値と引数 関数の変数と戻り値の型名に使用可能 例 struct roll Serch(struct roll data) { ... } ##ユーザー定義型 ユーザーが自分で型に別の名前を付けることができる機能。 typedef 型名 別名; 例 typedef int boolean; これでbooleanはintとして扱われる。 ###構造体と組み合わせて使う。 例 宣言 typeof struct roll typedef struct roll { char name[32]; int birth; int zip; char address[82]; char tell[20]; } Roll; 使用 Roll data; data.zip=152548; ##列挙 列挙とはその変数に入る値をプログラマが決めることのできる機能です。 ###宣言 enum 列挙型名 { 列挙子, . . . }; 例 enum boolean { TRUE, FALSE}; ###使用 enum boolean result; result = TRUE; }} [[C言語講座第六回演習]]