配列では特定の型を複数まとめて扱うことができました。しかし逆を言うと一つの型しかまとめることができませんでした。 そこで複数の型の変数をひとかたまりとして扱う機能があります。それが構造体です。
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
{
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;