C言語入門|構造体配列の基礎

ここまで学んできた配列では、
int や char といった 基本型 を並べて扱ってきました。

でも実際のプログラムでは、
「数値ひとつ」では足りない場面がたくさんあります。

たとえば、

  • 社員の名前
  • 年齢
  • 給与

これらを ひとまとめで1人分として扱いたい とき、
そこで登場するのが 構造体 です。

そして、その構造体を
さらに配列としてまとめて扱う のが、
今回のテーマである 構造体配列 です。

構造体配列って何をするもの?

構造体配列とは、とてもシンプルに言うと、

構造体を要素にした配列

のことです。

これまでの配列は、こんな形でした。

配列の要素
scores[0]int
scores[1]int

構造体配列では、要素そのものが構造体になります。

配列の要素
employees[0]Employee 型
employees[1]Employee 型

「1人分の情報」を
「1要素」として扱えるのが、大きな特徴です。

構造体配列を使うと何がうれしい?

構造体配列を使うと、
次のようなメリットがあります。

ポイント説明
まとまりが良い1人分の情報を1つとして扱える。
管理しやすい複数人のデータをループで処理できる。
拡張しやすい項目が増えても構造体を直すだけ。

プログラムが一気に
現実世界に近い形 になります。

サンプルプログラムで見てみよう

ここでは、
社員情報を構造体配列で管理する例 に置き換えて解説します。

構造体と配列を組み合わせた例

プロジェクト名:7-7-1 ソースファイル名: sample7-7-1.c

#include <stdio.h>

typedef char String[64];

typedef struct {
    String name;
    int age;
    int salary;
} Employee;

int main(void)
{
    Employee emp1 = {"佐藤", 30, 300};
    Employee emp2 = {"鈴木", 25, 280};
    Employee emp3 = {"高橋", 40, 400};

    Employee employees[] = {emp1, emp2, emp3};

    const String TEMPLATE = "%s:年齢=%2d  給与=%3d万円\n";

    for (int i = 0; i < 3; i++) {
        printf(TEMPLATE,
               employees[i].name,
               employees[i].age,
               employees[i].salary);
    }

    return 0;
}

プログラムの構造を整理してみよう

このプログラムでは、
構造体 → 配列 → ループ
という流れがとてもきれいに整理されています。

登場する要素の役割

要素役割
struct Employee社員1人分の情報の型
employees[]複数の社員をまとめた配列
for 文全社員を順番に処理

構造体配列の要素へのアクセス方法

構造体配列の要素には、
2段階 でアクセスします。

employees[i].name

これは、

  1. employees[i] で i番目の社員を取り出す
  2. .name でその社員の名前を取り出す

という意味になります。

表で整理すると、次のようになります。

書き方意味
employees[i]i番目の構造体
employees[i].agei番目の社員の年齢
employees[i].salaryi番目の社員の給与

初期化をまとめて書くこともできる

先ほどのプログラムでは、
いったん変数に代入してから配列に入れました。

実は、次のように
1つの式でまとめて書く こともできます。

Employee employees[] = {
    {"佐藤", 30, 300},
    {"鈴木", 25, 280},
    {"高橋", 40, 400}
};

この書き方は、

  • データが一覧で見やすい。
  • 配列の内容が一目で分かる。

というメリットがあります。

構造体配列の型に注目しよう

ここで、型についてもしっかり確認しておきましょう。

Employee employees[3];

このとき、

  • employees の型は
    Employee[3] 型
  • employees[0] の型は
    Employee 型

になります。

これは、
基本型の配列や、多次元配列とまったく同じ考え方です。

まとめ:現実世界のデータを扱う第一歩

構造体配列を使えるようになると、
C言語でできることが一気に広がります。

  • 単なる数値の集まりから
  • 意味を持ったデータの集まりへ

というステップアップです。

最初は少し長く見えるかもしれませんが、
配列の考え方自体は今までと同じ です。

あとは、
「要素が構造体になっただけ」
そう思って、気楽に取り組んでみてください 😊