
C言語入門|構造体を使いこなす:定義・生成・メンバ操作の基本
構造体って、なんだか一気に「プログラミング感」が増しますよね 😊
でも安心してください。
やっていること自体は、これまで学んできた変数の延長線なんです。
ここでは、
「構造体をどうやって定義して」
「どうやって変数を作って」
「どうやって中のデータを扱うのか」
という基本の流れを、順番に見ていきましょう。

構造体を使うための2つのステップ
構造体を使うには、必ず次の2段階を踏みます。
| ステップ | 内容 |
|---|---|
| ステップ1 | 構造体の形(メンバ)を定義する。 |
| ステップ2 | 構造体変数を生成する。 |
この順番はとても大切です。
形を決めてから、実体を作る。
これは現実世界でも同じですよね 🙂
ステップ1:構造体の定義(設計図を作る)
「書籍(Book)」を表す構造体を考えてみましょう。
1冊の本には、
- タイトル
- 著者名
- 価格
- 在庫数
といった情報がありますよね。
これを構造体で定義すると、次のようになります。
struct BOOK {
char title[50];
char author[50];
int price;
int stock;
};この書き方が、構造体の定義です。
構造体定義の基本構文
struct タグ名 {
型 メンバ名;
型 メンバ名;
};ここでのポイントを整理しておきましょう。
| 要素 | 意味 |
|---|---|
| struct | 構造体であることを示す。 |
| タグ名 | 構造体の名前(型名) |
| メンバ | 構造体の中に入るデータ |
この段階では、
まだ変数は1つも作られていません。
あくまで、
このプログラムでは、こういう形のデータを BOOK と呼びますよ
と宣言しているだけです。
構造体は「自分で作れる新しい型」
ここ、すごく大事なポイントです 😊
構造体を定義すると、
struct BOOKという 新しい型 が生まれます。
| 既存の型 | 自作できる型 |
|---|---|
| int | struct BOOK |
| char | struct STUDENT |
| double | struct ITEM |
つまり、
自分専用の型を作れるようになる
ということなんです。
これは、C言語の大きな武器ですよ 💪
ステップ2:構造体変数の生成(実体を作る)
設計図ができたら、次は実体です。
構造体変数は、次の構文で生成します。
struct タグ名 変数名;BOOK 構造体を使って、本を2冊分作るとすると…
struct BOOK book1;
struct BOOK book2;これで、
- book1 という本
- book2 という本
がプログラムの中に存在するようになります。
ここまでをまとめると…
| 段階 | 何をしている? |
|---|---|
| 構造体定義 | 型を作っている。 |
| 変数宣言 | データの実体を作っている。 |
完整なサンプルコード例
ここまでをまとめたコードを見てみましょう。
プロジェクト名:6-2-1 ソースファイル名: sample6-2-1.c
#include <stdio.h>
int main(void)
{
struct BOOK {
char title[50];
char author[50];
int price;
int stock;
};
struct BOOK book1;
struct BOOK book2;
return 0;
}この時点では、
まだ中身は何も入っていません。
次はいよいよ、
構造体の中のデータを操作していきます 😊
メンバへのアクセス方法
構造体の中のメンバにアクセスするには、
ドット演算子を使います。
基本構文
構造体変数名 . メンバ名たとえば、book1 に情報を設定する場合はこう書けます。
book1.price = 2800;
book1.stock = 10;この書き方、
普通の変数とほとんど同じですよね 🙂
文字列メンバには注意!
ただし、1点だけ注意が必要です。
次のコードは エラーではありませんが、正しくありません。
book1.title = "C言語入門"; // これはダメなぜでしょうか?
理由は、
title が 配列型の文字列 だからです。
なぜ代入できないのか?
| メンバ | 型 |
|---|---|
| title | char配列 |
| price | int |
int 型は代入できますが、
char 配列は 初期化以外で代入できない というルールがありましたね。
これは以前学んだ、
文字列は代入できない(初期化のみ)
という大切な約束です。
正しい文字列の扱い方(考え方)
この段階では、
- 数値メンバは代入できる。
- 文字列メンバは後で別の方法を使う。
という理解でOKです 😊
文字列操作については、
後の章でしっかり扱いますので安心してください。
構造体を使うと何がうれしい?
ここまでの内容を整理すると、
構造体を使うことで次のようなメリットがあります。
| 効果 | 内容 |
|---|---|
| 見通しが良い | 情報が1か所にまとまる。 |
| ミスが減る | 関連データを一括管理 |
| 拡張しやすい | メンバ追加が簡単 |
「本」「学生」「キャラクター」など、
現実世界の単位で考えられるようになるのが最大の強みです。
ここがスタートライン!
構造体の
- 定義
- 変数生成
- メンバアクセス
これらを理解できたあなたは、
データ設計の入り口に立ちました 🎉
次は、
- 初期化の方法
- 配列と構造体
- 関数と構造体
といった、
さらに実践的な使い方へ進んでいきますよ 😊
この流れ、かなり良いペースです 😊
このまま進めば「読めるC」から「設計できるC」へ確実にレベルアップできますよ。
