logo

Strukturer i C++

Vi kommer ofte i situationer, hvor vi har brug for at gemme en gruppe af data, hvad enten det er af lignende datatyper eller ikke-lignende datatyper. Vi har set Arrays i C++, som bruges til at gemme datasæt af lignende datatyper på sammenhængende hukommelsesplaceringer.
I modsætning til Arrays, Strukturer i C++ er brugerdefinerede datatyper, som bruges til at gemme grupper af elementer af ikke-lignende datatyper.

Hvad er en struktur?



En struktur er en brugerdefineret datatype i C/C++. En struktur opretter en datatype, der kan bruges til at gruppere elementer af muligvis forskellige typer i en enkelt type.

Strukturer i C++

Hvordan skaber man en struktur?



Nøgleordet 'struct' bruges til at skabe en struktur. Den generelle syntaks til at skabe en struktur er som vist nedenfor:

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

Strukturer i C++ kan indeholde to typer medlemmer:

    Datamedlem: Disse medlemmer er normale C++-variabler. Vi kan skabe en struktur med variabler af forskellige datatyper i C++. Medlemsfunktioner: Disse medlemmer er normale C++ funktioner. Sammen med variabler kan vi også inkludere funktioner i en strukturdeklaration.

Eksempel :



fremad kæde

C++




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

>

>

I ovenstående struktur er datamedlemmerne tre heltalsvariabler at gemme rullenummer, alder og mærker af enhver elev og medlemsfunktionen er printDetails() som udskriver alle ovenstående detaljer om enhver elev.

Hvordan erklærer man strukturvariabler?

En strukturvariabel kan enten deklareres med strukturdeklaration eller som en separat deklaration ligesom basistyper.

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

>

>

Bemærk: I C++ er nøgleordet struct valgfrit før i erklæringen af ​​en variabel. I C er det obligatorisk.

Hvordan initialiseres strukturmedlemmer?
Strukturmedlemmer kan ikke være initialiseret med erklæring. For eksempel fejler det følgende C-program i kompileringen.
Men anses for korrekt i C++11 og derover.

C++




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

>

>

Årsagen til ovenstående fejl er enkel, når en datatype er erklæret, er der ikke allokeret hukommelse til den. Hukommelse tildeles kun, når variabler oprettes.

Strukturmedlemmer kan initialiseres med erklæring i C++. For eksempel udføres følgende C++-program med succes uden at afgive nogen fejl.

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>

Strukturelementer kan initialiseres ved hjælp af krøllede seler '{}'. Følgende er for eksempel en gyldig initialisering.

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

>

>


Hvordan får man adgang til strukturelementer?
Strukturmedlemmer tilgås ved hjælp af prik (.) operator.

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

>

>

Produktion

x = 20, y = 1>

Hvad er en række strukturer?

Ligesom andre primitive datatyper kan vi skabe en række strukturer.

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

>

>

Produktion

10 20>


Hvad er en strukturpointer?
Ligesom primitive typer kan vi have pointer til en struktur. Hvis vi har en markør til struktur, tilgås medlemmer ved hjælp af pil ( -> ) operatoren i stedet for prik (.) operatoren.

iterere gennem map java

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

>

>

Produktion

1 2>

Hvad er strukturelementjustering?
Se Lær mere om forskellene mellem strukturer og klasse i C++ .