logo

C++ の構造体

類似したデータ型であっても、類似していないデータ型であっても、データのグループを保存する必要がある状況がよくあります。 C++ の配列は、類似したデータ型のデータのセットを連続したメモリ位置に格納するために使用されます。
配列とは異なり、 C++ の構造体 類似しないデータ型の項目のグループを格納するために使用されるユーザー定義のデータ型です。

構造とは何ですか?



構造体は、C/C++ のユーザー定義のデータ型です。構造体は、異なるタイプの項目を 1 つのタイプにグループ化するために使用できるデータ型を作成します。

C++ の構造体

構造を作成するにはどうすればよいですか?



「struct」キーワードは構造体の作成に使用されます。構造体を作成するための一般的な構文は次のとおりです。

struct structureName{ member1; member2; member3; . . . memberN; };>

C++ の構造体には、次の 2 種類のメンバーを含めることができます。

    データ メンバー : これらのメンバーは通常の C++ 変数です。 C++ では、さまざまなデータ型の変数を含む構造体を作成できます。メンバー関数 : これらのメンバーは通常の C++ 関数です。変数に加えて、構造体宣言内に関数を含めることもできます。

:



ブラウザの設定はどこで確認できますか

C++




// Data Members> int> roll;> int> age;> int> marks;> > // Member Functions> void> printDetails()> {> >cout<<>'Roll = '><' '; cout<<'Age = '< ' '; cout<<'Marks = '< }>

>

>

上記の構造では、データ メンバーは格納する 3 つの整数変数です。 ロール番号、発行年数、マーク 任意の学生のメンバー関数は printDetails() これは、生徒の上記の詳細をすべて出力します。

構造体変数を宣言するにはどうすればよいですか?

構造体変数は、構造体宣言で宣言することも、基本型と同様に別の宣言として宣言することもできます。

C++




// A variable declaration with structure declaration.> struct> Point> {> >int> x, y;> } p1;>// The variable p1 is declared with 'Point'> // A variable declaration like basic data types> struct> Point> {> >int> x, y;> };> int> main()> {> >struct> Point p1;>// The variable p1 is declared like a normal variable> }>

>

>

注: C++ では、変数宣言の前に struct キーワードはオプションです。 Cでは必須です。

構造体のメンバーを初期化するにはどうすればよいですか?
構造体のメンバー ありえない 宣言で初期化されます。たとえば、次の C プログラムはコンパイルに失敗します。
ただし、C++11 以降では正しいと見なされます。

C++




struct> Point> {> >int> x = 0;>// COMPILER ERROR: cannot initialize members here> >int> y = 0;>// COMPILER ERROR: cannot initialize members here> };>

>

>

上記のエラーの理由は単純で、データ型が宣言されたときに、そのデータ型にメモリが割り当てられないためです。メモリは変数の作成時にのみ割り当てられます。

構造体のメンバーは C++ の宣言で初期化できます。たとえば、次の C++ プログラムはエラーをスローすることなく正常に実行されます。

C++




// In C++ We can Initialize the Variables with Declaration in Structure.> #include> using> namespace> std;> struct> Point {> >int> x = 0;>// It is Considered as Default Arguments and no Error is Raised> >int> y = 1;> };> int> main()> {> >struct> Point p1;> >// Accessing members of point p1> >// No value is Initialized then the default value is considered. ie x=0 and y=1;> >cout <<>'x = '> << p1.x <<>', y = '> << p1.y< // Initializing the value of y = 20; p1.y = 20; cout << 'x = ' << p1.x << ', y = ' << p1.y; return 0; } // This code is contributed by Samyak Jain>

>

>

 x=0, y=1 x=0, y=20>

構造体のメンバーは中括弧「{}」を使用して初期化できます。たとえば、次は有効な初期化です。

C++


document.queryselector



struct> Point {> >int> x, y;> };> int> main()> {> >// A valid initialization. member x gets value 0 and y> >// gets value 1. The order of declaration is followed.> >struct> Point p1 = { 0, 1 };> }>

>

>


構造要素にアクセスするにはどうすればよいですか?
構造体のメンバーには、ドット (.) 演算子を使用してアクセスします。

C++




#include> using> namespace> std;> struct> Point {> >int> x, y;> };> int> main()> {> >struct> Point p1 = { 0, 1 };> >// Accessing members of point p1> >p1.x = 20;> >cout <<>'x = '> << p1.x <<>', y = '> << p1.y;> >return> 0;> }>

>

>

出力

x = 20, y = 1>

構造体の配列とは何ですか?

他のプリミティブ データ型と同様に、構造体の配列を作成できます。

C++




#include> using> namespace> std;> struct> Point {> >int> x, y;> };> int> main()> {> >// Create an array of structures> >struct> Point arr[10];> >// Access array members> >arr[0].x = 10;> >arr[0].y = 20;> >cout << arr[0].x <<>' '> << arr[0].y;> >return> 0;> }>

動的配列Java
>

>

出力

10 20>


構造体ポインタとは何ですか?
プリミティブ型と同様に、構造体へのポインタを持つことができます。構造体へのポインターがある場合は、ドット (.) 演算子の代わりに矢印 ( -> ) 演算子を使用してメンバーにアクセスします。

C++




#include> using> namespace> std;> struct> Point {> >int> x, y;> };> int> main()> {> >struct> Point p1 = { 1, 2 };> >// p2 is a pointer to structure p1> >struct> Point* p2 = &p1;> >// Accessing structure members using> >// structure pointer> >cout ' ' return 0; }>

>

>

出力

1 2>

構造体メンバーの位置合わせとは何ですか?
見る C++ の構造体とクラスの違いについて詳しく学ぶ