構造体・struct/構造体の宣言と初期化
スポンサーリンク
スポンサーリンク
ライフスタイル関連のコンテンツ
お金 | 仕事 | 勉強 | プライベート | 健康 | 心
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般
お金 | 仕事 | 勉強 | プライベート | 健康 | 心
プログラミング関連のコンテンツ
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 // 最初の単価価格 };
と書くことで、構造体の宣言と同時に初期化が可能です。
スポンサーリンク
>> 次の記事 : 共用体・union/構造体との違い
スポンサーリンク