C++ Strukturer med eksempel
Hva er en struktur i C++?
A STRUKT er en C++ datastruktur som kan brukes til å lagre sammen elementer av ulike datatyper. I C++, er en struktur en brukerdefinert datatype. Strukturen oppretter en datatype for å gruppere elementer av forskjellige datatyper under en enkelt 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.
Det kan imidlertid hende du må 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:
Kodeforklaring:
- 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:
Kodeforklaring:
- 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:
Kodeforklaring:
- 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.
Oppsummering
- En struct er en datastruktur som lagrer dataelementer som tilhører forskjellige typer.
- Mens en matrise lagrer dataelementer av lignende type, lagrer en struktur dataelementer av forskjellige typer.
- En struct bør brukes når dataelementene ikke forventes å endre verdi.
- Medlemmene av en struktur er tilgjengelig ved å bruke prikk (.) operatoren.
- Vi må lage en forekomst av strukturen.
- Å opprette en C++ struct, bruker vi nøkkelordet struct.
- Pekere som peker til en struktur lages på samme måte som pekere som peker til vanlige typer, opprettes.
- En struct kan sendes som et argument til en funksjon på samme måte som vanlige funksjoner sendes.