構造体・struct/構造体の宣言と初期化

スポンサーリンク
スポンサーリンク
ライフスタイル関連のコンテンツ
お金 | 仕事 | 勉強 | プライベート | 健康 |
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般

すべての要素が同じデータ型の場合、C++では、配列で要素をグループにまとめて保持できます。
しかし、整数、文字列など異なるデータ型から構成される要素を、一つのデータにまとめたいと考える場合、構造体というデータ型を使います。
構造体を構成する要素は、「メンバ」と呼ばれ、一つ一つにデータ型を指定します。

スポンサーリンク

構造体の定義

構造体は、構造体の型枠を宣言し、その型枠を持つ構造体変数の宣言を行うことで、使用できるようになります。
構造体の型枠は、以下のように定義します。

struct <構造体データ型の名前> {
    <メンバ型1> <メンバ名1>;  // 説明1
    <メンバ型2> <メンバ名2>;  // 説明2
    ・・・;
} <変数の名前>;

たとえば、パソコンに関する構造体の型枠を定義してみますと・・・

struct bin {
    char    pcname[20]; // PCの名称
    int     quant;      // 数量
    int     price;      // 価格
} computer;             // 構造体の型名(変数名)

binは、この構造体を用いて新しい変数を宣言するときに使用できる、新しいデータ型の名称となります。
末尾のcomputerは、構造体の型名となり、これを使用して新しい変数を宣言できます。

構造体変数の宣言

struct bin computer;    // 構造体の変数を宣言

構造体の名前を省略

定義の、<構造体データ型の名前>の部分は、省略することができます。

struct {
    char    pcname[20]; // PCの名称
    int     quant;      // 数量
    int     price;      // 価格
} computer;             // 構造体の型名

こうすると、新しいデータ型は作成されず、データ型が匿名の構造体となります。

構造体の変数名を省略

定義の、<変数の名前>の部分も省略することができます。

struct bin {
    char    pcname[20]; // PCの名称
    int     quant;      // 数量
    int     price;      // 価格
} ;

この場合は、構造体(データ型)は定義されますが、変数は定義されません。

構造体の名前、変数の名前の両方を省略する書き方も許可されますが、意味のないコードとなるので、通常用いません。

構造体メンバへのアクセス

C++の場合、構造体の変数宣言のときに、structを省略できます。

struct bin {
    char    pcname[20]; // PCの名称
    int     quant;      // 数量
    int     price;      // 価格
} computer;             // 構造体の型名(変数名)
 
bin computer;    // 構造体の変数を宣言

変数を宣言することで、構造体のメンバにアクセス可能となります。

<変数>.<メンバ>

として、構造体のメンバへとアクセスできます。

computer.pcname;
computer.price = 1000;  // 価格の代入
computer.quant = 5;     // 数量の代入
total = computer.price * computer.quant;    // 合計金額

構造体の宣言時の初期化

構造体は、宣言時に初期化することができます。

struct bin {
    char    pcname[20]; // PCの名称
    int     quant;      // 数量
    int     price;      // 価格
};
struct bin computer = {
    "Super machine",    // PCの名称
    10,                 // 最初は在庫5
    1500                // 最初の単価価格
};

または・・・

struct bin {
    char    pcname[20]; // PCの名称
    int     quant;      // 数量
    int     price;      // 価格
} computer = {
    "Super machine",    // PCの名称
    10,                 // 最初は在庫5
    1500                // 最初の単価価格
};

と書くことで、構造体の宣言と同時に初期化が可能です。

スポンサーリンク
 
スポンサーリンク