logo

Strukturer i C++

Vi kommer ofte i situasjoner der vi trenger å lagre en gruppe data, enten det er av lignende datatyper eller ikke-lignende datatyper. Vi har sett Arrays i C++ som brukes til å lagre sett med data av lignende datatyper på sammenhengende minneplasseringer.
I motsetning til Arrays, Strukturer i C++ er brukerdefinerte datatyper som brukes til å lagre grupper av elementer av ikke-lignende datatyper.

Hva er en struktur?



En struktur er en brukerdefinert datatype i C/C++. En struktur lager en datatype som kan brukes til å gruppere elementer av muligens forskjellige typer i en enkelt type.

Strukturer i C++

Hvordan lage en struktur?



Nøkkelordet ‘struct’ brukes til å lage en struktur. Den generelle syntaksen for å lage en struktur er som vist nedenfor:

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

Strukturer i C++ kan inneholde to typer medlemmer:

    Datamedlem: Disse medlemmene er normale C++-variabler. Vi kan lage en struktur med variabler av forskjellige datatyper i C++. Medlemsfunksjoner: Disse medlemmene er normale C++-funksjoner. Sammen med variabler kan vi også inkludere funksjoner i en strukturdeklarasjon.

Eksempel :



arrayliste

C++




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

>

>

I strukturen ovenfor er datamedlemmene tre heltallsvariabler å lagre rullenummer, alder og merker av enhver student og medlemsfunksjonen er printDetails() som skriver ut alle de ovennevnte detaljene til enhver student.

Hvordan erklære strukturvariabler?

En strukturvariabel kan enten deklareres med strukturdeklarasjon eller som en separat deklarasjon som 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> }>

>

>

Merk: I C++ er nøkkelordet struct valgfritt før i deklarasjonen av en variabel. I C er det obligatorisk.

Hvordan initialisere strukturmedlemmer?
Strukturmedlemmer Kan ikke være initialisert med erklæring. For eksempel mislykkes følgende C-program i kompilering.
Men anses som riktig i C++11 og over.

C++




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

>

>

Årsaken til feilen ovenfor er enkel, når en datatype er deklarert, blir det ikke tildelt noe minne for den. Minne tildeles kun når variabler opprettes.

Strukturmedlemmer kan initialiseres med deklarasjon i C++. For eksempel kjøres følgende C++-program vellykket uten å gi noen feil.

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 hjelp av krøllete klammeparenteser '{}'. 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å tilgang til strukturelementer?
Du får tilgang til strukturelementer ved å bruke punktoperatoren (.).

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

>

>

Produksjon

x = 20, y = 1>

Hva er en rekke strukturer?

Som andre primitive datatyper kan vi lage en rekke 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;> }>

>

>

Produksjon

10 20>


Hva er en strukturpeker?
Som primitive typer kan vi ha peker til en struktur. Hvis vi har en peker til struktur, åpnes medlemmer ved å bruke pil ( -> ) operatoren i stedet for prikken (.) operatoren.

iterer gjennom kart-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; }>

>

>

Produksjon

1 2>

Hva er strukturelementjustering?
Se Lær mer om forskjellene mellom strukturer og klasse i C++ .