
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これは、
- employees[i] で i番目の社員を取り出す
- .name でその社員の名前を取り出す
という意味になります。
表で整理すると、次のようになります。
| 書き方 | 意味 |
|---|---|
| employees[i] | i番目の構造体 |
| employees[i].age | i番目の社員の年齢 |
| employees[i].salary | i番目の社員の給与 |
初期化をまとめて書くこともできる
先ほどのプログラムでは、
いったん変数に代入してから配列に入れました。
実は、次のように
1つの式でまとめて書く こともできます。
Employee employees[] = {
{"佐藤", 30, 300},
{"鈴木", 25, 280},
{"高橋", 40, 400}
};この書き方は、
- データが一覧で見やすい。
- 配列の内容が一目で分かる。
というメリットがあります。
構造体配列の型に注目しよう
ここで、型についてもしっかり確認しておきましょう。
Employee employees[3];このとき、
- employees の型は
Employee[3] 型 - employees[0] の型は
Employee 型
になります。
これは、
基本型の配列や、多次元配列とまったく同じ考え方です。
まとめ:現実世界のデータを扱う第一歩
構造体配列を使えるようになると、
C言語でできることが一気に広がります。
- 単なる数値の集まりから
- 意味を持ったデータの集まりへ
というステップアップです。
最初は少し長く見えるかもしれませんが、
配列の考え方自体は今までと同じ です。
あとは、
「要素が構造体になっただけ」
そう思って、気楽に取り組んでみてください 😊
