構造体とは
いろいろな種類のお互いに関連するデータをまとめて1つの塊にして扱いやすくしたもの。
扱う変数の量を減らせるので、プログラムを簡素化できる。
宣言と定義方法
- 構造体の宣言
これは型に作ることに相当する。一度鋳型を作れば、それを元に同じ型の物を何個でも作ることができる。この型のことを「構造体テンプレート」と呼ぶ
struct 構造体タグ名 {メンバー宣言};
- 構造体の定義
これは、型を元に実際の物を作る作業に相当する。作ったもの(構造体変数)には、通常の変数ど同様で1つ1つに他の変数とは、違う名前をつけることができる
struct 構造体タグ名 構造体変数名;
typedef double Height;
これは、プログラムを読みやすくするために、有効である。ここででは、double型がHeight型になる。つまり、Height a,b,c; は、double a,b,c; と同じ意味になる。
#include <stdio.h>
struct XY {
int x, y;
};
struct roll_1 {
char name[30];
long birth;
char addres[80];
int size[2];
int gender;
struct roll *next; //自己参照型構造体
struct XY center; //構造体の中(メンバー変数)に構造体を入れる
};
typedef struct {
char name[30];
long birth;
char addres[80];
int size[2];
int gender;
struct roll *next; //自己参照型構造体
struct XY center; //構造体の中(メンバー変数)に構造体を入れる
}roll_2;
int main(){
struct roll_1 my_data1, his_data1;
roll_2 my_data2, his_data2;
return 0;
}
構造体の初期化
struct 構造体タグ名 構造体変数名 = {初期値1, 初期値2, ・・・・・}
//構造体テンプレート
struct XY
{
int x, y;
};
struct roll_1
{
char name[30];
long birth;
char addres[80];
int size[2];
int gender;
};
//構造体の定義
struct roll my_data = {"Jiro Fukusima",
19910123,
"Tokyo Japan"
{180, 65},
0
};
構造体メンバーへのアクセス
構造体の中の要素のことをメンバーと呼ぶ。メンバーの参照は「.」(ピリオド)を用いて以下のように行う。
構造体変数名.メンバー名
my_data.nameのようにアクセスする
scanf("%d", &my_data.gender);
&をつけるか、付けないかは、メンバーがポインタかそうでないかによる。