C言語

【c言語が今でも使われる要素の一つ】構造体

構造体とは

いろいろな種類のお互いに関連するデータをまとめて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);
&をつけるか、付けないかは、メンバーがポインタかそうでないかによる。

参考サイト

構造体の基本