【C++/C言語】構造体 (struct) の使い方入門!複数の変数を一つにまとめる方法

目次

はじめに

C++やC言語でプログラミングをする際、例えば「商品」の情報を管理するために、productID(商品ID)、productName(商品名)、price(価格)といった、関連性の高い複数の変数を個別に宣言するのは非効率です。

このような、互いに強く関連する複数の変数を、一つの大きな「型」としてまとめたい場合に使うのが、「構造体 (struct)」です。struct を使うことで、intchar のように、自分だけのオリジナルなデータ型を定義できます。

この記事では、構造体の基本的な定義方法と、定義した構造体を使ってデータをスマートに管理する方法を解説します。


構造体の使い方

1. 構造体を定義する

まず、struct キーワードを使って、Product(商品)という新しいデータ型の「設計図」を定義します。この設計図の中に、その型を構成する変数(メンバ)を記述します。

#include <iostream>
#include <string>

// 構造体の定義
struct Product {
    int id;           // 商品ID
    std::string name; // 商品名
    int price;        // 価格
};

解説:

  • struct Product { ... };: Product という名前の新しい構造体型を定義しています。ブロックの最後のセミコロン ; を忘れないようにしましょう。
  • int id; など: この構造体が、どのようなデータ(メンバ)で構成されるかを、通常の変数宣言と同じように記述します。

2. 構造体を使って変数を宣言・使用する

作成した Product 型を使って、実際に変数を宣言し、そのメンバに値を代入・参照します。

int main() {
    // 1. 作成した "Product" 型で変数を宣言
    Product itemA;
    Product itemB;
    
    // 2. 各メンバに値を代入
    // 変数名.メンバ名 の形式でアクセスする
    itemA.id = 101;
    itemA.name = "高機能マウス";
    itemA.price = 4500;
    
    itemB.id = 102;
    itemB.name = "ワイヤレスキーボード";
    itemB.price = 8200;
    
    // 3. メンバの値を参照
    std::cout << "商品Aの情報" << std::endl;
    std::cout << "ID: " << itemA.id << std::endl;
    std::cout << "名前: " << itemA.name << std::endl;
    std::cout << "価格: " << itemA.price << "円" << std::endl;
    
    return 0;
}

解説:

  • Product itemA;: intdouble と同じように、自作した Product 型で変数を宣言できます。
  • itemA.id = 101;: 構造体の各メンバにアクセスするには、変数名.メンバ名 というように、ドット(.)で繋ぎます。これをドット演算子(またはメンバアクセス演算子)と呼びます。

応用: 配列や他の構造体と組み合わせる

構造体は、配列と組み合わせることで、複数の商品データをスマートに管理できます。また、構造体のメンバとして、別の構造体を持つことも可能です。

struct Store {
    std::string storeName;
    Product featuredItem; // 構造体のメンバとして、別の構造体を持つ
};

int main() {
    // 構造体の配列
    Product inventory[3];
    inventory[0] = {201, "Webカメラ", 6800}; // 初期化子リストでまとめて代入
    
    std::cout << inventory[0].name << std::endl; // -> Webカメラ
    
    // 構造体の中に構造体
    Store tokyoStore;
    tokyoStore.storeName = "東京本店";
    tokyoStore.featuredItem = inventory[0];
    
    std::cout << tokyoStore.storeName << "の目玉商品: " 
              << tokyoStore.featuredItem.name << std::endl;
              
    return 0;
}

まとめ

今回は、C++/C言語における構造体 (struct) の基本的な使い方を解説しました。

  • struct を使うと、関連する複数の変数をまとめた、独自のデータ型を定義できる。
  • 構造体の各要素をメンバと呼ぶ。
  • メンバへのアクセスは、ドット演算子 . を使う。

構造体を使いこなすことは、データを整理し、プログラムを構造化するための第一歩です。複雑なデータを扱う際には、積極的に構造体を活用して、分かりやすくメンテナンス性の高いコードを目指しましょう。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次