C言語 struct 構造体とは?

今回は、構造体について説明していきます。

早速、構造体を使ってプログラムを作っていきましょう。

まさし君とひろみちゃんのプロフィールを表示するプログラムを作る事にします。

#include <stdio.h>
#include <string.h>

/* 構造体であるhitoを宣言 */
struct hito {
      int age;     /* 年齢 */
      char blood[3];  /* 血液型 */
};

void main(void) {
      struct hito masasi; /* hito型変数masasiを宣言 */
      struct hito hiromi; /* hito型変数hiromiを宣言 */

      /* プロフィール設定 */
      /* まさし君 */
      masasi.age = 10;
      strcpy(masasi.blood, "A");

      /* ひろみちゃん */
      hiromi.age = 9;
      strcpy(hiromi.blood, "B");

      /* 年齢、血液型表示 */
      /* まさし君 */
      printf("まさしくんのプロフィール\n");
      printf("年齢:%d歳\n", masasi.age);
      printf("血液型:%s型\n", masasi.blood);

      /* ひろみちゃん */
      printf("ひろみちゃんのプロフィール\n");
      printf("年齢:%d歳\n", hiromi.age);
      printf("血液型:%s型\n", hiromi.blood);
}

このプログラムでは、hitoという新しい型を作っています。
構造体を定義すると表現します。)
そして、その中身は、int型変数のageとchar型変数のbloodがあります。
つまり、hitoと言う型は、int型変数のageとchar型変数のbloodの
2つの要素を持っている構造体 と言う事になります。

/* 構造体であるhitoを宣言 */
struct hito {
      int age;      /* 年齢 */
      char blood[3];      /* 血液型 */
};

使い方は簡単です。まずは、変数と同じように宣言します。
この時、先頭にキーワードstructを付けます。

struct hito masasi; /* hito型変数masasiを宣言 */
struct hito hiromi; /* hito型変数hiromiを宣言 */

続いて年齢と血液型をそれぞれ設定します。この時は、
変数名.(ドット)要素名 と言う感じで使います。

/* プロフィール設定 */
/* まさし君 */
masasi.age = 10;
strcpy(masasi.blood, "A");

/* ひろみちゃん */
hiromi.age = 9;
strcpy(hiromi.blood, "B");


あとは、今までと同じように表示しています。

/* 年齢、血液型表示 */
/* まさし君 */
printf("まさしくんのプロフィール\n");
printf("年齢:%d歳\n", masasi.age);
printf("血液型:%s型\n", masasi.blood);

/* ひろみちゃん */
printf("ひろみちゃんのプロフィール\n");
printf("年齢:%d歳\n", hiromi.age);
printf("血液型:%s型\n", hiromi.blood);

構造体を使う事で
プログラムを比較的分かりやすくする利点があります。