logo

Structuren in C++

We komen vaak situaties tegen waarin we een groep gegevens moeten opslaan, of het nu gaat om vergelijkbare gegevenstypen of niet-soortgelijke gegevenstypen. We hebben arrays in C++ gezien die worden gebruikt om een ​​reeks gegevens van vergelijkbare gegevenstypen op aaneengesloten geheugenlocaties op te slaan.
In tegenstelling tot arrays, Structuren in C++ zijn door de gebruiker gedefinieerde gegevenstypen die worden gebruikt om een ​​groep items met niet-soortgelijke gegevenstypen op te slaan.

Wat is een structuur?



Een structuur is een door de gebruiker gedefinieerd gegevenstype in C/C++. Een structuur creëert een gegevenstype dat kan worden gebruikt om items van mogelijk verschillende typen in één type te groeperen.

Structuren in C++

Hoe creëer je een structuur?



Het trefwoord ‘struct’ wordt gebruikt om een ​​structuur te creëren. De algemene syntaxis voor het maken van een structuur is zoals hieronder weergegeven:

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

Structuren in C++ kunnen twee soorten leden bevatten:

    Gegevenslid: deze leden zijn normale C++-variabelen. We kunnen een structuur maken met variabelen van verschillende gegevenstypen in C++. Ledenfuncties: deze leden zijn normale C++-functies. Naast variabelen kunnen we ook functies opnemen in een structuurdeclaratie.

Voorbeeld :



tekenreeksmethoden java

C++




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

>

>

In de bovenstaande structuur zijn de gegevensleden drie integer-variabelen die moeten worden opgeslagen rolnummer, leeftijd en merktekens van elke student en de lidfunctie is printdetails() waarmee alle bovenstaande gegevens van elke student worden afgedrukt.

Hoe structuurvariabelen declareren?

Een structuurvariabele kan worden gedeclareerd met een structuurdeclaratie of als een afzonderlijke declaratie, zoals bij basistypen.

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

>

>

Opmerking: in C++ is het sleutelwoord struct optioneel bij het declareren van een variabele. In C is het verplicht.

Hoe structuurleden initialiseren?
Structuur leden kan niet zijn geïnitialiseerd met declaratie. Het volgende C-programma mislukt bijvoorbeeld bij het compileren.
Maar wordt als correct beschouwd in C++11 en hoger.

C++




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

>

>

De reden voor de bovenstaande fout is eenvoudig: wanneer een datatype wordt gedeclareerd, wordt er geen geheugen voor toegewezen. Geheugen wordt alleen toegewezen wanneer variabelen worden gemaakt.

Structuurleden kunnen worden geïnitialiseerd met declaratie in C++. Het volgende C++-programma wordt bijvoorbeeld succesvol uitgevoerd zonder een fout te genereren.

C++




zei Madhuri
// 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>

Structuurelementen kunnen worden geïnitialiseerd met behulp van accolades ‘{}’. Het volgende is bijvoorbeeld een geldige initialisatie.

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

>

>


Hoe krijg ik toegang tot structuurelementen?
Structuurelementen zijn toegankelijk via de puntoperator (.).

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

>

>

Uitvoer

x = 20, y = 1>

Wat is een array van structuren?

Net als andere primitieve gegevenstypen kunnen we een reeks structuren creëren.

C++




cp-opdracht in Linux

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

>

>

Uitvoer

10 20>


Wat is een structuuraanwijzer?
Net als primitieve typen kunnen we een verwijzing naar een structuur hebben. Als we een verwijzing naar structuur hebben, worden leden benaderd met behulp van de pijloperator ( -> ) in plaats van de puntoperator (.).

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

>

>

Uitvoer

1 2>

Wat is uitlijning van structuurelementen?
Zien Lees meer over de verschillen tussen structuren en klassen in C++ .