まぬねこの足跡。。。

備忘録+たのしさ+ひっそりと

C言語 構造体 struct

構造体 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

構造体 配列

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