類似したデータ型であっても、類似していないデータ型であっても、データのグループを保存する必要がある状況がよくあります。 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++ の構造体とクラスの違いについて詳しく学ぶ 。