C++ Strukturer med eksempel
โก Smart opsummering
Struktur i C++ er en brugerdefineret datatype, der grupperer elementer af forskellige datatyper under et enkelt navn, hvor รฉn variabel kan indeholde relaterede vรฆrdier sรฅsom en persons navn, statsborgerskab og alder sammen.

Hvad er en struktur i C++?
En STRUKTUR er en C++ datastruktur, der kan bruges til at gemme elementer af forskellige datatyper sammen. I C++, en struktur er en brugerdefineret datatype. Strukturen opretter en datatype for grupperping elementer af forskellige datatyper under en enkelt datatype.
For eksempel:
Antag, at du skal gemme oplysninger om en person, deres navn, statsborgerskab og alder. Du kan oprette variabler som navn, statsborgerskab og alder for at gemme dataene separat.
Du kan dog vรฆre nรธdt til at gemme oplysninger om mange personer i fremtiden. Det betyder, at der vil blive oprettet variabler for forskellige individer. For eksempel navn1, statsborgerskab1, alder1 osv. For at undgรฅ dette er det bedre at oprette en struct.
Hvornรฅr skal man bruge en struktur?
Her er nogle grunde til at bruge struktur i C++.
- Brug en struct, nรฅr du skal gemme elementer af forskellige datatyper under รฉn datatype.
- C++ strukturer er en vรฆrditype i stedet for at vรฆre en referencetype. Brug en struktur, hvis du ikke har til hensigt at รฆndre dine data efter oprettelsen.
C++ Strukturinitialisering
At oprette en C++ struktur, bruger vi nรธgleordet struct efterfulgt af en identifikator. Identifikationen bliver navnet pรฅ strukturen. Her er syntaksen for oprettelse af en C++ struktur:
Syntaks:
struct struct_name { // struct members }
I ovenstรฅende syntaks har vi brugt nรธgleordet struct. struct_name er navnet pรฅ strukturen.
Strukturelementerne tilfรธjes inden for krรธllede seler. Disse medlemmer tilhรธrer sandsynligvis forskellige datatyper.
For eksempel:
struct Person { char name[30]; int citizenship; int age; }
I ovenstรฅende eksempel er Person en struktur med tre medlemmer. Medlemmerne inkluderer navn, statsborgerskab og alder. Et medlem er af char-datatypen, mens de resterende 2 er heltal, nรฅr en struktur oprettes, er der ikke allokeret hukommelse. Hukommelse tildeles kun, efter at en variabel er tilfรธjet til strukturen.
Oprettelse af strukturforekomster
I ovenstรฅende eksempel har vi oprettet en struktur ved navn Person. Vi kan oprette en struct-variabel som fรธlger:
Person p;
P er en strukturvariabel af typen Person. Vi kan bruge denne variabel til at fรฅ adgang til medlemmerne af strukturen.
Adgang til strukturmedlemmer
For at fรฅ adgang til struct-medlemmerne bruger vi instansen af โโstruct- og prik-operatoren (.). For at fรฅ adgang til medlemsalderen for struct Person:
p.age = 27;
Vi har fรฅet adgang til medlemsalderen for struct Person ved hjรฆlp af structs instans, s. Vi har sรฅ sat vรฆrdien af โโmedlemsalderen til 27 รฅr.
Eksempel 1:
#include <iostream> using namespace std; struct Person { int citizenship; int age; }; int main(void) { struct Person p; p.citizenship = 1; p.age = 27; cout << "Person citizenship: " << p.citizenship << endl; cout << "Person age: " << p.age << endl; return 0; }
Output:
Her er et skรฆrmbillede af koden:
Code Forklaring:
- Inkluder iostream-header-filen i vores program for at bruge de funktioner, der er defineret i den.
- Inkluder std-navneomrรฅdet for at bruge dets klasser uden at kalde det.
- Opret en struktur med navnet Person.
- Begyndelsen af โโstrukturlegemet.
- Opret et struct-medlem ved navn statsborgerskab af typen heltal.
- Opret et struct-medlem ved navn alder af typen heltal.
- Slutningen af โโstrukturlegemet.
- Kald funktionen main(). Programlogikken skal tilfรธjes i denne funktions brรธdtekst.
- Opret en instans af strukturen Person og giv den navnet p.
- Indstil vรฆrdien af โโstructmedlemsborgerskab til 1.
- Indstil vรฆrdien af โโstrukturmedlemsalderen til 27.
- Udskriv vรฆrdien af โโstruct-medlemsborgerskabet pรฅ konsollen sammen med en anden tekst.
- Udskriv vรฆrdien af โโstruct-medlemsalderen pรฅ konsollen sammen med anden tekst.
- Programmet bรธr returnere en vรฆrdi, hvis det kรธrer med succes.
- Slut pรฅ main()-funktionen.
Henvisninger til struktur
Det er muligt at oprette en markรธr, der peger pรฅ en struktur. Det svarer til, hvordan pointere, der peger pรฅ native datatyper som int, float, double osv. oprettes. Bemรฆrk, at en pointer ind C++ vil gemme en hukommelsesplacering.
Eksempel 2:
#include <iostream> using namespace std; struct Length { int meters; float centimeters; }; int main() { Length *ptr, l; ptr = &l; cout << "Enter meters: "; cin >> (*ptr).meters; cout << "Enter centimeters: "; cin >> (*ptr).centimeters; cout << "Length = " << (*ptr).meters << " meters " << (*ptr).centimeters << " centimeters"; return 0; }
Output:
Her er et skรฆrmbillede af koden:
Code Forklaring:
- Inkluder iostream-header-filen i vores program for at bruge dens funktioner.
- Inkluder std-navneomrรฅdet i vores program for at bruge dets klasser uden at kalde det.
- Opret en struktur med navnet Lรฆngde.
- Start af konstruktionens krop Lรฆngde.
- Opret et struct-medlem med navnet meter med heltalsdatatype.
- Opret et struct-medlem ved navn centimeter af typen heltal.
- Enden af โโkonstruktionens krop Lรฆngde.
- Kald funktionen main().
- Start af hovedteksten af โโfunktionen main().
- Opret en pointervariabel *ptr og normalvariabel l af typen Length.
- Gem adressen pรฅ variabel l i vores pointer variabel.
- Vis en meddelelse pรฅ konsollen, der beder brugeren om at indtaste vรฆrdien for variable mรฅlere.
- Lรฆs den vรฆrdi, som brugeren har indtastet via tastaturet. Medlemsfunktionsmรฅlerne tilgรฅs her ved hjรฆlp af pointervariablen.
- Vis en meddelelse pรฅ konsollen, der beder brugeren om at indtaste vรฆrdien for variable centimeter.
- Lรฆs den vรฆrdi, som brugeren har indtastet via tastaturet. Medlemsfunktionen centimeter er her adgang til ved hjรฆlp af pointervariablen.
- Vis vรฆrdierne lรฆst fra brugeren pรฅ konsollen sammen med anden tekst.
- Programmet skal returnere en vรฆrdi ved vellykket eksekvering.
- Slutningen af โโhoveddelen af โโfunktionen main().
Struktur som funktionsargument
Du kan sende en struct til en funktion som et argument. Dette gรธres pรฅ samme mรฅde som at bestรฅ et normalt argument. Strukturvariablerne kan ogsรฅ overfรธres til en funktion. Et godt eksempel er, nรฅr du skal vise vรฆrdierne for struct-medlemmer. Lad os demonstrere dette:
Eksempel 3:
#include<iostream> using namespace std; struct Person { int citizenship; int age; }; void func(struct Person p); int main() { struct Person p; p.citizenship = 1; p.age = 27; func(p); return 0; } void func(struct Person p) { cout << " Person citizenship: " << p.citizenship<<endl; cout << " Person age: " << p.age; }
Output:
Her er et skรฆrmbillede af koden:
Code Forklaring:
- Inkluder iostream-header-filen i vores fil. Vi vil derefter bruge dens funktioner uden at fรฅ fejl.
- Inkluder std-navneomrรฅdet i vores program for at bruge dets klasser. Vi behรธver ikke kalde navneomrรฅdet for at bruge dets klasser.
- Opret en struktur med navnet Person.
- Start af kroppen af โโstruct Person.
- Opret et medlem af struct Person. Medlemmet hedder statsborgerskab og er af typen heltal.
- Opret et medlem af struct Person. Medlemmet hedder alder og er af typen heltal.
- Slutningen af โโkroppen af โโstruct Person.
- Opret en funktion, der tager forekomsten af โโstruct Person, p, som argument.
- Kald hovedfunktionen. { markerer begyndelsen af โโhoveddelen af โโfunktionen main().
- Opret en instans af struct Person og giv den navnet p.
- Fรฅ adgang til struct-medlemsvariablen statsborgerskab ved at bruge instansen af โโstruct, p, og tildel den vรฆrdien 1.
- Fรฅ adgang til struct-medlemsvariablen alder ved at bruge instansen af โโstruct, p, og tildel den vรฆrdien 27.
- Kald funktionen og giv den instansen af โโstrukturen Person, p, som argument.
- Funktionen skal returnere en vรฆrdi ved vellykket udfรธrelse.
- Slutningen af โโhoveddelen af โโfunktionen main().
- Opret kroppen af โโfunktionen.
- Starten af โโkroppen af โโfunktionen.
- Fรฅ adgang til struct-medlemsborgerskabsvรฆrdien og udskriv den pรฅ konsollen sammen med anden tekst.
- Fรฅ adgang til struct-medlemsalderens vรฆrdi og udskriv den pรฅ konsollen sammen med anden tekst.
- Slut pรฅ funktionslegemet.
Begrรฆnsning af en C++ struktur
Fรธlgende er begrรฆnsningerne for strukturer:
- Strukturdatatypen kan ikke behandles som indbyggede datatyper.
- Operators som + - og andre kan ikke bruges pรฅ strukturvariabler.
- Strukturer understรธtter ikke dataskjul. Medlemmerne af en struktur kan tilgรฅs af enhver funktion uanset dens omfang.
- Statiske elementer kan ikke deklareres inde i strukturen.
- Konstruktรธrer kan ikke oprettes inde i en struktur.



