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.
Sammendrag
- 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.



