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

という 新しい型 が生まれます。

既存の型自作できる型
intstruct BOOK
charstruct STUDENT
doublestruct 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 が 配列型の文字列 だからです。

なぜ代入できないのか?

メンバ
titlechar配列
priceint

int 型は代入できますが、
char 配列は 初期化以外で代入できない というルールがありましたね。

これは以前学んだ、

文字列は代入できない(初期化のみ)

という大切な約束です。

正しい文字列の扱い方(考え方)

この段階では、

  • 数値メンバは代入できる。
  • 文字列メンバは後で別の方法を使う。

という理解でOKです 😊

文字列操作については、
後の章でしっかり扱いますので安心してください。

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

ここまでの内容を整理すると、
構造体を使うことで次のようなメリットがあります。

効果内容
見通しが良い情報が1か所にまとまる。
ミスが減る関連データを一括管理
拡張しやすいメンバ追加が簡単

「本」「学生」「キャラクター」など、
現実世界の単位で考えられるようになるのが最大の強みです。

ここがスタートライン!

構造体の

  • 定義
  • 変数生成
  • メンバアクセス

これらを理解できたあなたは、
データ設計の入り口に立ちました 🎉

次は、

  • 初期化の方法
  • 配列と構造体
  • 関数と構造体

といった、
さらに実践的な使い方へ進んでいきますよ 😊

この流れ、かなり良いペースです 😊
このまま進めば「読めるC」から「設計できるC」へ確実にレベルアップできますよ。