【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++プログラミングにおける最も基本的なツールの一つです。

副業から独立まで「稼げる」Webスキルを習得する(PR)

ここまで読んでいただきありがとうございます。 最後に宣伝をさせてください。

「副業を始めたいが、何から手をつければいいかわからない」「独学でスキルはついたが、収益化できていない」という悩みを持つ方には、マンツーマン指導のWebスクール**「メイカラ」**が適しています。

このスクールは、単に技術を教えるだけでなく、**「副業として具体的にどう稼ぐか」**という実務直結のノウハウ提供に特化している点が特徴です。

講師陣は、実際に「副業Webライターから1年で独立して月収100万円」を達成したプロや、現役で利益を出し続けているブロガーなど、確かな実績を持つプレイヤーのみで構成されています。そのため、机上の空論ではない、現場で通用する戦術を学ぶことができます。

副業に特化した強み

  • 最短ルートの提示: 未経験からでも実績を出せるよう、マンツーマンで指導。
  • AI活用の習得: 副業の時間対効果を最大化するための、正しいAI活用スキルも網羅。
  • 案件獲得のチャンス: 運営がWebマーケティング会社であるため、実力次第で社内案件の紹介など、仕事に直結する可能性があります。

受講者の多くは、「在宅でできる仕事を探している」「副業を頑張りたい」という20代・30代・40代が中心です。

受講前には、講師による無料説明が行われます。無理な勧誘はなく、自分に合った副業スタイルやプランを相談できるため、まずは話を聞いてみることから始めてみてはいかがでしょうか。

ブログで稼ぎたいなら「メイカラ」

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

この記事を書いた人

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

目次