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++
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;> }> |
出力
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++ の構造体とクラスの違いについて詳しく学ぶ 。