
【6日でできるC言語入門】構造体の概念と使い方
C言語で「構造体(struct)」を使うことで、複数種類のデータをひとまとまりにして扱うことができるようになります。たとえば「人」を表すなら、「名前」「年齢」「身長」といった個別のデータを一つの単位としてまとめられます。
ここでは、構造体の基本概念から使い方、配列やポインタとの組み合わせまで、図やサンプルコードを使って詳しく解説します。

1.構造体の基本概念と宣言
1.1. 構造体とは
C言語の構造体は、異なる型のデータを一つのまとまり(新しい型)として扱うための仕組みです。
| 用語 | 説明 |
|---|---|
| 構造体 | 複数のメンバ(異なる型の変数)をまとめたデータ型 |
| メンバ | 構造体を構成する個々の変数 |
構造体の定義とイメージ
struct person {
int id; // 識別番号
char name[100]; // 名前
double height; // 身長
};上記のように「struct+構造体名+{メンバ定義}」で宣言します。
1.2. 構造体変数の宣言と基本操作
構造体型が定義できたら、変数のように使うことができます。
struct person p; // 構造体変数pの宣言個々のメンバには「.」を使ってアクセスします。
| アクセス例 | 意味 |
|---|---|
| p.id | 識別番号 |
| p.name | 名前 |
| p.height | 身長 |
2.構造体の利用例
2.1. 構造体の基本的な使い方
プロジェクト/ファイル名: Lesson64_1/main.c
#include <stdio.h>
#include <string.h>
struct person {
int id;
char name[100];
double height;
};
int main(void) {
struct person data; // 構造体変数の宣言
data.id = 101;
strcpy(data.name, "田中一郎");
data.height = 170.5;
printf("ID:%d 名前:%s 身長:%.1fcm\n", data.id, data.name, data.height);
return 0;
}実行結果
「SDLチェック」を「いいえ」にして、プログラムを実行します。
ID:101 名前:田中一郎 身長:170.5cm解説
- 構造体変数のメンバへ「.」でアクセス
- 文字列は
strcpy()で代入
2.2. 構造体の配列
複数の同じ種類のデータをまとめたい場合、「構造体の配列」を使います。
サンプル:配列による複数データの管理
プロジェクト/ファイル名: Lesson64_2/main.c
#include <stdio.h>
#include <string.h>
struct person {
int id;
char name[100];
double height;
};
int main(void) {
struct person list[] = {
{ 201, "佐藤花子", 160.3 },
{ 202, "鈴木次郎", 175.2 },
{ 203, "加藤美咲", 158.7 }
};
int i;
for (i = 0; i < 3; i++) {
printf("ID:%d 名前:%s 身長:%.1fcm\n", list[i].id, list[i].name, list[i].height);
}
return 0;
}実行結果
ID:201 名前:佐藤花子 身長:160.3cm
ID:202 名前:鈴木次郎 身長:175.2cm
ID:203 名前:加藤美咲 身長:158.7cm解説
- 構造体の初期化には「{…}」を使う
- 配列にすることで複数人分をまとめて管理できる
3.構造体とtypedef・ポインタ
3.1. typedefによる型名の短縮
「typedef」を使うと「struct」を省略して構造体変数を扱えます。
typedef struct person PERSON;
PERSON p1;3.2. 構造体ポインタの利用
構造体ポインタは「->」でメンバにアクセスします。
サンプル:構造体ポインタの使い方
プロジェクト/ファイル名: Lesson64_3/main.c
#include <stdio.h>
#include <string.h>
typedef struct {
int id;
char name[100];
double height;
} PERSON;
void print_person(PERSON* p) {
printf("ID:%d 名前:%s 身長:%.1fcm\n", p->id, p->name, p->height);
}
int main(void) {
PERSON s = { 301, "山本太郎", 180.4 };
print_person(&s);
return 0;
}実行結果
ID:301 名前:山本太郎 身長:180.4cmまとめ
- 構造体は複数の関連データをまとめて扱うためのデータ型
- 配列・ポインタ・typedefと組み合わせて柔軟なデータ管理ができる。
- 「.」「->」によるメンバアクセスを使い分ける。
構造体の使い方を理解することで、C言語プログラムの設計力が大きく向上します。
