C++ 例付き構造体

構造体とは何か C++?

A 構造体   C++ 異なるデータ型の要素を一緒に保存するために使用できるデータ構造。 C++構造体は、ユーザー定義のデータ型です。構造体は、異なるデータ型の項目を単一のデータ型にグループ化するためのデータ型を作成します。

例:

誰かの名前、市民権、年齢などの情報を保存する必要があるとします。 名前、市民権、年齢などの変数を作成して、データを個別に保存できます。

ただし、将来的には多くの人物に関する情報を保存する必要が生じる可能性があります。 それは、さまざまな個人に対する変数が作成されることを意味します。 たとえば、name1、citizenship1、age1 などです。これを回避するには、構造体を作成することをお勧めします。

ストラクチャーをいつ使用するか?

構造を使用する理由は次のとおりです。 C++.

  • 異なるデータ型の要素を XNUMX つのデータ型に格納する必要がある場合は、構造体を使用します。
  • C++ 構造体は参照型ではなく値型です。作成後にデータを変更する予定がない場合は、構造体を使用します。

C++ 構造体の初期化

作成するには C++ 構造体を作成するには、structキーワードに続いて識別子を使用します。識別子は構造体の名前になります。以下は構造体を作成するための構文です。 C++ 構造体:

構文:

struct struct_name  
{  
     // struct members
}   

上記の構文では、struct キーワードを使用しました。 struct_name は構造体の名前です。

構造体のメンバーは中括弧内に追加されます。 これらのメンバーは、おそらく異なるデータ型に属しています。

例:

struct Person  
{  
    char name[30];  
     int citizenship;  
     int age;  
}  

上の例では、 person は 2 つのメンバーを持つ構造体です。 メンバーには名前、国籍、年齢が含まれます。 XNUMX つのメンバーは char データ型ですが、残りの XNUMX つは構造体の作成時に整数であり、メモリは割り当てられません。 メモリは、変数が構造体に追加された後にのみ割り当てられます。

構造体インスタンスの作成

上の例では、Person という名前の構造体を作成しました。 次のように構造体変数を作成できます。

Person p;

p は Person 型の構造体変数です。 この変数を使用して、構造体のメンバーにアクセスできます。

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

構造体のメンバーにアクセスするには、構造体のインスタンスとドット (.) 演算子を使用します。たとえば、構造体 Person のメンバー age にアクセスするには、次のようにします。

p.age = 27;

構造体のインスタンス p を使用して、構造体 person のメンバーの年齢にアクセスしました。 次に、メンバーの年齢の値を 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;
}

出力:

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

コードのスクリーンショットは次のとおりです。

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

コードの説明:

  1. プログラムに定義されている関数を使用するには、iostream ヘッダー ファイルをプログラムに組み込みます。
  2. std 名前空間を含めると、呼び出さずにそのクラスを使用できます。
  3. Person という名前の構造体を作成します。
  4. 構造体本体の始まり。
  5. 整数型の Citizenship という名前の構造体メンバーを作成します。
  6. age という名前の整数型の構造体メンバーを作成します。
  7. 構造体本体の終わり。
  8. main() 関数を呼び出します。 プログラム ロジックは、この関数の本体内に追加する必要があります。
  9. 構造体 Person のインスタンスを作成し、それに p という名前を付けます。
  10. 構造体メンバーの市民権の値を 1 に設定します。
  11. 構造体メンバーの age の値を 27 に設定します。
  12. 構造体メンバーの市民権の値を他のテキストとともにコンソールに出力します。
  13. 構造体メンバー age の値を他のテキストとともにコンソールに出力します。
  14. プログラムが正常に実行された場合、プログラムは値を返す必要があります。
  15. main() 関数の終わり。

構造体へのポインタ

構造体を指すポインタを作成することもできます。これは、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;
}

出力:

構造体へのポインタ

コードのスクリーンショットは次のとおりです。

構造体へのポインタ

コードの説明:

  1. iostream ヘッダー ファイルの機能を使用するには、プログラムに iostream ヘッダー ファイルをインクルードします。
  2. プログラムに std 名前空間を含めると、そのクラスを呼び出さずに使用できます。
  3. Length という名前の構造体を作成します。
  4. 構造体の本体の開始長さ。
  5. 整数データ型の meter という名前の構造体メンバーを作成します。
  6. 整数型の centimeters という名前の構造体メンバーを作成します。
  7. 構造体の本体の終わりの長さ。
  8. main() 関数を呼び出します。
  9. main() 関数の本体の開始。
  10. Length 型のポインター変数 *ptr と通常の変数 l を作成します。
  11. 変数 l のアドレスを ポインタ変数.
  12. コンソールにメッセージを表示し、ユーザーに変数メーターの値を入力するよう求めます。
  13. ユーザーがキーボードから入力した値を読み取ります。 ここでは、ポインター変数を使用してメンバー関数のメートルにアクセスします。
  14. コンソールにメッセージを表示し、ユーザーに可変センチメートルの値を入力するよう求めます。
  15. ユーザーがキーボードから入力した値を読み取ります。 ここでは、ポインター変数を使用してメンバー関数 cm にアクセスします。
  16. ユーザーから読み取った値を他のテキストと一緒にコンソールに表示します。
  17. プログラムは、実行が成功すると値を返す必要があります。
  18. main() 関数の本体の終わり。

関数の引数としての構造体

構造体を引数として関数に渡すことができます。 これは、通常の引数を渡すのと同じ方法で行われます。 構造体変数を関数に渡すこともできます。 良い例は、構造体のメンバーの値を表示する必要がある場合です。 これを実証してみましょう:

例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;
}

出力:

関数の引数としての構造体

コードのスクリーンショットは次のとおりです。

関数の引数としての構造体

コードの説明:

  1. iostream ヘッダー ファイルをファイルに含めます。 次に、エラーが発生することなくその関数を使用します。
  2. クラスを使用するには、プログラムに std 名前空間を含めます。 クラスを使用するために名前空間を呼び出す必要はありません。
  3. Person という名前の構造体を作成します。
  4. 構造体 person の本体の開始部分。
  5. 構造体 Person のメンバーを作成します。 メンバーの名前は Citizenship で、型は整数です。
  6. 構造体 Person のメンバーを作成します。 メンバーの名前は age で、型は整数です。
  7. 構造体 Person の本体の終わり。
  8. struct Person p のインスタンスを引数として受け取る関数を作成します。
  9. main関数を呼び出します。 { は main() 関数の本体の始まりを示します。
  10. struct Person のインスタンスを作成し、それに p という名前を付けます。
  11. 構造体 p のインスタンスを使用して構造体メンバー変数 Citizenship にアクセスし、それに値 1 を割り当てます。
  12. 構造体のインスタンス p を使用して構造体のメンバー変数 age にアクセスし、それに値 27 を割り当てます。
  13. 関数を呼び出し、構造体 Person のインスタンス p を引数として渡します。
  14. 関数は、実行が成功すると値を返す必要があります。
  15. main() 関数の本体の終わり。
  16. 関数の本体を作成します。
  17. 関数の本体の始まり。
  18. 構造体メンバーの市民権値にアクセスし、他のテキストとともにコンソールに出力します。
  19. 構造体メンバーの年齢値にアクセスし、他のテキストとともにコンソールに出力します。
  20. 関数本体の終わり。

の制限 C++ 構造

構造の制限は次のとおりです。

  • struct データ型は、組み込みデータ型のように扱うことはできません。
  • Opera+ - などのトルは使用できません。 構造変数.
  • 構造体はデータの隠蔽をサポートしていません。 構造体のメンバーには、スコープに関係なく、任意の関数からアクセスできます。
  • 静的メンバーは構造体本体内で宣言できません。
  • コンストラクターは構造体内に作成できません。

まとめ

  • 構造体は、さまざまなタイプに属するデータ要素を格納するデータ構造です。
  • 配列には同様の型のデータ要素が格納されますが、構造体には異なる型のデータ要素が格納されます。
  • データ要素の値が変更されることが予想されない場合は、構造体を使用する必要があります。
  • 構造体のメンバーにはドット (.) 演算子を使用してアクセスします。
  • 構造体のインスタンスを作成する必要があります。
  • 作成するには C++ struct の場合は、 struct キーワードを使用します。
  • 構造体を指すポインターは、通常の型を指すポインターが作成される方法と同様に作成されます。
  • 通常の関数を渡すのと同じ方法で、構造体を引数として関数に渡すことができます。