構造体 struct
データをまとめる。構造体変数同士で演算、比較はNG。
構造体タグ書き方
struct 構造体変数名{型 変数名;
:
};
宣言
関数よりも先に宣言struct member { int team; int number; char name[50]; }; int main(void) { struct member data; }
構造体タグを新規型とする typedef
typedef 型の形 型名※プログラム内で「struct」を省略できる。
「struct member data;」→「member data;」
struct member { int team; int number; char name[50]; }; typedef struct member data;
↓構造体タグを省略
typedef struct member { int team; int number; char name[50]; } member;
構造体の要素へアクセス
構造体変数名.要素名struct member data; data.number = 10; printf("%d\n", data.number);
表示イメージ
10
構造体変数同士 代入
struct member dataA,dataB; dataA.team = 99; dataA.number = 18; strcpy(dataA.name, "ABCD"); dataB = dataA; printf("dataA.team = %d\n", dataA.team); printf("dataA.number = %d\n", dataA.number); printf("dataA.name = %s\n", dataA.name); printf("dataB.team = %d\n", dataB.team); printf("dataB.number = %d\n", dataB.number); printf("dataB.name = %s\n", dataB.name);
表示イメージ
dataA.team = 99
dataA.number = 11
dataA.name = ABCD
dataB.team = 99
dataB.number = 11
dataB.name = ABCD
dataA.number = 11
dataA.name = ABCD
dataB.team = 99
dataB.number = 11
dataB.name = ABCD
構造体 配列
student data[5]; data[1].number = 11; strcpy(data[1].name, "ABCD"); printf("data[1].number = %d\n", data[1].number); printf("data[1].name = %s\n", data[1].name);
表示イメージ
data[1].number = 11
data[1].name = ABCD
data[1].name = ABCD