C++ 構造体と例
C++ の構造体とは?
STRUCT 異なるデータ型の要素をまとめて格納するために使用できる C++ データ構造です。 C++ では、構造体はユーザー定義のデータ型です。この構造は、異なるデータ タイプのアイテムを 1 つのデータ タイプの下にグループ化するためのデータ タイプを作成します。
例:
誰か、名前、市民権、年齢に関する情報を保存する必要があるとします。名前、市民権、年齢などの変数を作成して、データを個別に保存できます。
ただし、将来、多くの人に関する情報を保存する必要が生じる可能性があります。これは、さまざまな個人の変数が作成されることを意味します。たとえば、name1、citizenship1、age1 などです。これを避けるには、構造体を作成することをお勧めします。
この C++ チュートリアルでは、次のことを学びます:
- C++ の構造体とは?
- ストラクチャーを使用するのはいつですか?
- C++ 構造体の初期化
- 構造体インスタンスの作成
- 構造体メンバーへのアクセス
- 構造へのポインタ
- 関数引数としての構造体
- C++ 構造の制限
ストラクチャを使用する場合
C++ で構造体を使用する理由はいくつかあります。
- 異なるデータ型の要素を 1 つのデータ型に格納する必要がある場合は、構造体を使用します。
- C++ 構造体は、参照型ではなく値型です。作成後にデータを変更するつもりがない場合は、構造体を使用してください。
C++ 構造体の初期化
C++ 構造を作成するには、struct キーワードを使用し、その後に識別子を続けます。識別子は構造体の名前になります。 C++ 構造体を作成するための構文は次のとおりです:
構文:
struct struct_name { // struct members }
上記の構文では、struct キーワードを使用しています。 struct_name は構造体の名前です。
構造体メンバーは中括弧内に追加されます。これらのメンバーは、おそらく異なるデータ型に属しています。
例:
struct Person { char name[30]; int citizenship; int age; }
上記の例では、Person は 3 つのメンバーを持つ構造体です。メンバーには、名前、市民権、および年齢が含まれます。メンバーの 1 つは char データ型で、残りの 2 つは整数で、構造体が作成されるとき、メモリは割り当てられません。メモリは、変数が構造体に追加された後にのみ割り当てられます。
構造体インスタンスの作成
上記の例では、Person という名前の構造体を作成しました。次のように構造体変数を作成できます:
Person p;
p は Person 型の構造体変数です。この変数を使用して、構造体のメンバーにアクセスできます。
構造体メンバーへのアクセス
構造体メンバーにアクセスするには、構造体のインスタンスとドット (.) 演算子を使用します。たとえば、構造体 Person のメンバー age にアクセスするには:
p.age = 27;
構造体のインスタンス p を使用して、構造体 Person のメンバ age にアクセスしました。次に、メンバーの年齢の値を 27 に設定しました。
例 1:
#include <iostream> using namespace std; struct Person { int citizenship; int age; }; int main(void) { struct Person p; p.citizenship = 1; p.age = 27; cout << "Person citizenship: " << p.citizenship << endl; cout << "Person age: " << p.age << endl; return 0; }
出力:
コードのスクリーンショットは次のとおりです:
コードの説明:
<オール>構造体へのポインタ
構造体を指すポインターを作成することができます。これは、int、float、double などのネイティブ データ型を指すポインターが作成される方法に似ています。 C++ のポインタはメモリ位置を格納することに注意してください。
例 2:
#include <iostream> using namespace std; struct Length { int meters; float centimeters; }; int main() { Length *ptr, l; ptr = &l; cout << "Enter meters: "; cin >> (*ptr).meters; cout << "Enter centimeters: "; cin >> (*ptr).centimeters; cout << "Length = " << (*ptr).meters << " meters " << (*ptr).centimeters << " centimeters"; return 0; }
出力:
コードのスクリーンショットは次のとおりです:
コードの説明:
<オール>関数引数としての構造体
構造体を引数として関数に渡すことができます。これは、通常の引数を渡すのと同じ方法で行われます。構造体変数を関数に渡すこともできます。良い例は、構造体メンバーの値を表示する必要がある場合です。これを示しましょう:
例 3:
#include<iostream> using namespace std; struct Person { int citizenship; int age; }; void func(struct Person p); int main() { struct Person p; p.citizenship = 1; p.age = 27; func(p); return 0; } void func(struct Person p) { cout << " Person citizenship: " << p.citizenship<<endl; cout << " Person age: " << p.age; }
出力:
コードのスクリーンショットは次のとおりです:
コードの説明:
<オール>C++ 構造の制限
以下は構造の制限です:
- 構造体データ型は、組み込みデータ型のように扱うことはできません。
- + - などの演算子は、構造体変数には使用できません。
- 構造はデータの隠蔽をサポートしていません。構造体のメンバーは、そのスコープに関係なく、どの関数からもアクセスできます。
- 構造体の本体内で静的メンバーを宣言することはできません。
- 構造体内でコンストラクタを作成することはできません。
まとめ:
- 構造体は、さまざまな型に属するデータ要素を格納するデータ構造です。
- 配列には類似した型のデータ要素が格納されますが、構造体には異なる型のデータ要素が格納されます。
- データ要素の値が変化しないことが予想される場合は、構造体を使用する必要があります。
- 構造体のメンバーには、ドット (.) 演算子を使用してアクセスします。
- 構造体のインスタンスを作成する必要があります。
- C++ 構造体を作成するには、struct キーワードを使用します。
- 構造体を指すポインターは、通常の型を指すポインターが作成される方法と同様に作成されます。
- 構造体は、通常の関数が渡されるのと同じ方法で、引数として関数に渡すことができます。
C言語