logo

Strukturen in C++

Wir kommen oft in Situationen, in denen wir eine Gruppe von Daten speichern müssen, unabhängig davon, ob es sich um ähnliche Datentypen oder nicht ähnliche Datentypen handelt. Wir haben Arrays in C++ gesehen, die zum Speichern von Datensätzen ähnlicher Datentypen an zusammenhängenden Speicherorten verwendet werden.
Im Gegensatz zu Arrays Strukturen in C++ sind benutzerdefinierte Datentypen, die zum Speichern von Gruppen von Elementen nicht ähnlicher Datentypen verwendet werden.

Was ist eine Struktur?



Eine Struktur ist ein benutzerdefinierter Datentyp in C/C++. Eine Struktur erstellt einen Datentyp, der zum Gruppieren von Elementen möglicherweise unterschiedlicher Typen in einem einzigen Typ verwendet werden kann.

Strukturen in C++

Wie erstelle ich eine Struktur?



Das Schlüsselwort „struct“ wird zum Erstellen einer Struktur verwendet. Die allgemeine Syntax zum Erstellen einer Struktur ist wie folgt:

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

Strukturen in C++ können zwei Arten von Membern enthalten:

    Datenmember: Diese Member sind normale C++-Variablen. Wir können in C++ eine Struktur mit Variablen verschiedener Datentypen erstellen. Mitgliedsfunktionen: Diese Mitglieder sind normale C++-Funktionen. Neben Variablen können wir auch Funktionen in eine Strukturdeklaration einbinden.

Beispiel :



chown-Befehl

C++




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

>

>

In der obigen Struktur sind die Datenelemente drei zu speichernde ganzzahlige Variablen Rollennummer, Alter und Markierungen eines Studierenden und die Mitgliedsfunktion ist printDetails() Dabei werden alle oben genannten Daten eines beliebigen Schülers ausgedruckt.

Wie deklariere ich Strukturvariablen?

Eine Strukturvariable kann entweder mit einer Strukturdeklaration oder als separate Deklaration wie Basistypen deklariert werden.

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

>

>

Hinweis: In C++ ist das Schlüsselwort struct vor der Deklaration einer Variablen optional. In C ist es obligatorisch.

Wie initialisiere ich Strukturmitglieder?
Strukturmitglieder kann nicht sein mit Deklaration initialisiert. Beispielsweise schlägt die Kompilierung des folgenden C-Programms fehl.
Wird jedoch in C++11 und höher als korrekt angesehen.

C++




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

>

>

Der Grund für den oben genannten Fehler ist einfach: Wenn ein Datentyp deklariert wird, wird ihm kein Speicher zugewiesen. Speicher wird nur zugewiesen, wenn Variablen erstellt werden.

Strukturmitglieder können mit einer Deklaration in C++ initialisiert werden. Beispielsweise wird das folgende C++-Programm erfolgreich ausgeführt, ohne dass ein Fehler auftritt.

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>

Strukturelemente können mit geschweiften Klammern „{}“ initialisiert werden. Im Folgenden finden Sie beispielsweise eine gültige Initialisierung.

C++


String-Split Java



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

>

>


Wie greife ich auf Strukturelemente zu?
Auf Strukturelemente wird mit dem Punktoperator (.) zugegriffen.

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

>

>

Ausgabe

x = 20, y = 1>

Was ist ein Array von Strukturen?

Wie andere primitive Datentypen können wir ein Array von Strukturen erstellen.

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

Array-Liste Java
>

>

Ausgabe

10 20>


Was ist ein Strukturzeiger?
Wie primitive Typen können wir Zeiger auf eine Struktur haben. Wenn wir einen Zeiger auf die Struktur haben, erfolgt der Zugriff auf Elemente mithilfe des Pfeiloperators ( -> ) anstelle des Punktoperators (.).

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

>

>

Ausgabe

1 2>

Was ist Strukturelementausrichtung?
Sehen Erfahren Sie mehr über die Unterschiede zwischen Strukturen und Klassen in C++ .