C++ Strukturer med eksempel
โก Smart oppsummering
Struktur i C++ er en brukerdefinert datatype som grupperer elementer av forskjellige datatyper under ett enkelt navn, slik at รฉn variabel inneholder relaterte verdier som en persons navn, statsborgerskap og alder sammen.

Hva er en struktur i C++?
En STRUKTUR er en C++ datastruktur som kan brukes til รฅ lagre sammen elementer av ulike datatyper. I C++, en struktur er en brukerdefinert datatype. Strukturen oppretter en datatype for grupperping elementer av forskjellige datatyper under รฉn datatype.
For eksempel:
Anta at du trenger รฅ lagre informasjon om noen, deres navn, statsborgerskap og alder. Du kan opprette variabler som navn, statsborgerskap og alder for รฅ lagre dataene separat.
Du kan imidlertid trenge รฅ lagre informasjon om mange personer i fremtiden. Det betyr at variabler for forskjellige individer vil bli opprettet. For eksempel navn1, statsborgerskap1, alder1 osv. For รฅ unngรฅ dette er det bedre รฅ lage en struktur.
Nรฅr skal man bruke en struktur?
Her er noen grunner til รฅ bruke struktur i C++.
- Bruk en struktur nรฅr du trenger รฅ lagre elementer av forskjellige datatyper under รฉn datatype.
- C++ strukturer er en verditype i stedet for รฅ vรฆre en referansetype. Bruk en struktur hvis du ikke har tenkt รฅ endre dataene dine etter opprettelsen.
C++ Strukturinitialisering
ร opprette en C++ struktur, bruker vi nรธkkelordet struct, etterfulgt av en identifikator. Identifikatoren blir navnet pรฅ strukturen. Her er syntaksen for รฅ lage en C++ struktur:
Syntaks:
struct struct_name { // struct members }
I syntaksen ovenfor har vi brukt nรธkkelordet struct. struct_name er navnet pรฅ strukturen.
Strukturelementene legges til i krรธllete klammeparenteser. Disse medlemmene tilhรธrer sannsynligvis ulike datatyper.
For eksempel:
struct Person { char name[30]; int citizenship; int age; }
I eksemplet ovenfor er Person en struktur med tre medlemmer. Medlemmene inkluderer navn, statsborgerskap og alder. Ett medlem er av char-datatypen, mens de resterende 2 er heltall nรฅr en struktur opprettes, minne er ikke tildelt. Minne tildeles bare etter at en variabel er lagt til strukturen.
Opprette strukturforekomster
I eksemplet ovenfor har vi laget en struktur som heter Person. Vi kan lage en strukturvariabel som fรธlger:
Person p;
P er en strukturvariabel av typen Person. Vi kan bruke denne variabelen for รฅ fรฅ tilgang til medlemmene av strukturen.
Tilgang til strukturmedlemmer
For รฅ fรฅ tilgang til struct-medlemmene bruker vi forekomsten av struct- og dot (.)-operatoren. For รฅ fรฅ tilgang til medlemsalderen til struct Person for eksempel:
p.age = 27;
Vi har fรฅtt tilgang til medlemsalderen til struct Person ved รฅ bruke structens instans, s. Vi har da satt verdien pรฅ 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; }
Utgang:
Her er et skjermbilde av koden:
Code Forklaring:
- Inkluder iostream-headerfilen i programmet vรฅrt for รฅ bruke funksjonene som er definert i den.
- Inkluder std-navneomrรฅdet for รฅ bruke klassene uten รฅ kalle det.
- Lag en struktur som heter Person.
- Begynnelsen av strukturkroppen.
- Opprett et strukturmedlem kalt statsborgerskap av typen heltall.
- Opprett et strukturmedlem kalt alder av typen heltall.
- Slutten av strukturkroppen.
- Kalle hoved()-funksjonen. Programlogikken skal legges til i hoveddelen av denne funksjonen.
- Lag en forekomst av strukturen Person og gi den navnet p.
- Sett verdien av struct-medlemsborgerskap til 1.
- Sett verdien av strukturmedlemsalderen til 27.
- Skriv ut verdien av struct-medlemsborgerskapet pรฅ konsollen sammen med annen tekst.
- Skriv ut verdien av struct-medlemsalderen pรฅ konsollen sammen med annen tekst.
- Programmet skal returnere en verdi hvis det kjรธrer vellykket.
- Slutten av hoved()-funksjonen.
Tips til struktur
Det er mulig รฅ lage en peker som peker til en struktur. Det ligner pรฅ hvordan pekere som peker til opprinnelige datatyper som int, float, double osv. opprettes. Merk at en peker inn C++ vil lagre en minneplassering.
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; }
Utgang:
Her er et skjermbilde av koden:
Code Forklaring:
- Inkluder iostream-headerfilen i programmet vรฅrt for รฅ bruke funksjonene.
- Inkluder std-navneomrรฅdet i programmet vรฅrt for รฅ bruke klassene uten รฅ kalle det.
- Lag en struktur som heter Lengde.
- Start av kroppen til strukturen Lengde.
- Opprett et strukturmedlem kalt meter med heltallsdatatype.
- Opprett et strukturmedlem kalt centimeter av typen heltall.
- Enden av kroppen til strukturen Lengde.
- Kalle hoved()-funksjonen.
- Start av hoveddelen av hoved()-funksjonen.
- Lag en pekervariabel *ptr og normalvariabel l av typen Length.
- Lagre adressen til variabel l i vรฅr pekervariabel.
- Vis en melding pรฅ konsollen som ber brukeren angi verdien for variable mรฅlere.
- Les verdien angitt av brukeren via tastaturet. Medlemsfunksjonsmรฅlerne nรฅs her ved hjelp av pekervariabelen.
- Vis en melding pรฅ konsollen som ber brukeren angi verdien for variable centimeter.
- Les verdien angitt av brukeren via tastaturet. Medlemfunksjonen centimeter nรฅs her ved hjelp av pekervariabelen.
- Vis verdiene lest fra brukeren pรฅ konsollen sammen med annen tekst.
- Programmet mรฅ returnere en verdi ved vellykket utfรธrelse.
- Slutten av hoveddelen av hoved()-funksjonen.
Struktur som funksjonsargument
Du kan sende en struktur til en funksjon som et argument. Dette gjรธres pรฅ samme mรฅte som รฅ bestรฅ et vanlig argument. Strukturvariablene kan ogsรฅ overfรธres til en funksjon. Et godt eksempel er nรฅr du trenger รฅ vise verdiene til strukturmedlemmer. La oss 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; }
Utgang:
Her er et skjermbilde av koden:
Code Forklaring:
- Inkluder iostream-header-filen i filen vรฅr. Vi vil da bruke funksjonene uten รฅ fรฅ feil.
- Inkluder std-navneomrรฅdet i programmet vรฅrt for รฅ bruke klassene. Vi trenger ikke รฅ kalle navneomrรฅdet for รฅ bruke klassene.
- Lag en struktur som heter Person.
- Start av kroppen til strukturpersonen.
- Opprett et medlem av struct Person. Medlemmet heter statsborgerskap og er av typen heltall.
- Opprett et medlem av struct Person. Medlemmet heter alder og er av typen heltall.
- Slutt pรฅ kroppen til struktur Person.
- Lag en funksjon som tar forekomsten av struct Person, p, som argument.
- Ring hovedfunksjonen. { markerer begynnelsen pรฅ hoveddelen av funksjonen main().
- Lag en forekomst av struct Person og gi den navnet p.
- Fรฅ tilgang til strukturmedlemsvariabelen statsborgerskap ved รฅ bruke forekomsten av strukturen, p, og tilordne den verdien 1.
- Fรฅ tilgang til strukturmedlemsvariabelen alder ved รฅ bruke forekomsten av strukturen, p, og tilordne den verdien 27.
- Kall funksjonen og send til den forekomsten av strukturen Person, p, som argument.
- Funksjonen mรฅ returnere en verdi ved vellykket kjรธring.
- Slutten av hoveddelen av hoved()-funksjonen.
- Lag kroppen til funksjonen.
- Starten av kroppen til funksjonen.
- Fรฅ tilgang til struct-medlemsborgerskapsverdien og skriv den ut pรฅ konsollen sammen med annen tekst.
- Fรฅ tilgang til aldersverdien for struct-medlemmet og skriv den ut pรฅ konsollen sammen med annen tekst.
- Slutt pรฅ funksjonskroppen.
Begrensning av en C++ struktur
Fรธlgende er begrensningene til strukturer:
- Strukturdatatypen kan ikke behandles som innebygde datatyper.
- Operatorer som + - og andre kan ikke brukes pรฅ strukturvariabler.
- Strukturer stรธtter ikke dataskjuling. Medlemmene av en struktur kan nรฅs av enhver funksjon uavhengig av omfanget.
- Statiske elementer kan ikke deklareres inne i strukturkroppen.
- Konstruktรธrer kan ikke opprettes inne i en struktur.



