【C++】構造体(struct)入門 | 型の定義から初期化、代入までを徹底解説

目次

はじめに

プログラミングで、「学生」の情報を管理したい場合、「学生番号(int型)」、「氏名(string型)」、「平均点(double型)」のように、複数の異なるデータが関連し合っています。これらの変数をバラバラに管理するのは非効率です。

C++の「構造体 (struct)」を使えば、これらの関連するデータを一つの「学生」というオリジナルの型として、ひとまとめにできます。

この記事では、構造体の基本的な使い方を、①定義 → ②変数宣言 → ③メンバへのアクセス → ④初期化・代入 というステップで、初心者にも分かりやすく解説します。


1. 構造体(型)の定義

まず、struct キーワードを使って、どのようなデータで構成されるのか、型の「設計図」を定義します。構造体を構成する各変数を「メンバ」と呼びます。

// 「学生」構造体の定義
struct Student {
    int id;           // 学生番号 (メンバ)
    std::string name; // 氏名 (メンバ)
    double average;   // 平均点 (メンバ)
};

解説: Student という新しい型を定義しました。この型は、int, std::string, double という3つのメンバで構成されます。定義の最後のセミコロン ; を忘れないようにしましょう。


2. 構造体変数の宣言とメンバへのアクセス

定義した構造体(型)を使って、実際にデータを格納するための変数(実体)を宣言します。メンバにアクセスするには、ドット演算子 (.) を使います。

サンプルコード

#include <iostream>
#include <string>

using namespace std;

// 「学生」構造体の定義
struct Student {
    int id;
    string name;
    double average;
};

int main() {
    // 構造体「型」から、構造体「変数」を宣言
    Student student1;

    // ドット(.)を使って、各メンバに値を代入
    cout << "学生番号を入力してください: ";
    cin >> student1.id;
    
    cout << "氏名を入力してください: ";
    cin >> student1.name;
    
    cout << "平均点を入力してください: ";
    cin >> student1.average;

    // メンバの値を参照して表示
    cout << "\n--- 入力された学生情報 ---" << endl;
    cout << "学生番号: " << student1.id << endl;
    cout << "氏名: " << student1.name << endl;
    cout << "平均点: " << student1.average << endl;

    return 0;
}

解説: student1.id のように、構造体変数名.メンバ名 という構文で、特定のメンバに値を代入したり、値を読み取したりできます。


3. 構造体の初期化と代入

構造体変数は、宣言と同時に初期化したり、他の構造体変数の内容を丸ごとコピー(代入)したりすることもできます。

サンプルコード

#include <iostream>
#include <string>

using namespace std;

struct Student {
    int id;
    string name;
    double average;
};

int main() {
    // 1. 初期化子リストを使って、宣言と同時に初期化
    Student studentA = {101, "佐藤", 85.5};
    
    // 2. 別の変数を宣言
    Student studentB;
    
    // 3. studentA の内容を studentB に一括で代入(コピー)
    studentB = studentA;
    
    // コピーされた内容を確認
    cout << "コピーされた学生Bの情報" << endl;
    cout << "学生番号: " << studentB.id << endl;   // -> 101
    cout << "氏名: " << studentB.name << endl;     // -> 佐藤
    cout << "平均点: " << studentB.average << endl; // -> 85.5
    
    return 0;
}

解説:

  • Student studentA = {101, "佐藤", 85.5};: 波括弧 {} を使った初期化子リストで、宣言時に各メンバの初期値をまとめて設定できます。値は構造体で定義されたメンバの順序に対応します。
  • studentB = studentA;: 代入演算子 = を使うと、studentA の全てのメンバの値が、studentB の対応するメンバに一括でコピーされます(メンバワイズコピー)。

まとめ

今回は、C++の構造体 struct の基本的な使い方を網羅的に解説しました。

  • struct を使って、複数の異なる型の変数をまとめた独自のデータ型を定義できる。
  • メンバへのアクセスにはドット演算子 (.) を使う。
  • 初期化子リスト ({...}) で、宣言と同時に値を設定できる。
  • 同じ型の構造体変数同士は、 = で一括代入できる。

構造体は、関連するデータを構造化して管理するための、C++プログラミングにおける最も基本的なツールの一つです。

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

この記事を書いた人

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

目次