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:

Tilgang til strukturmedlemmer

Her er et skjermbilde av koden:

Tilgang til strukturmedlemmer

Kodeforklaring:

  1. Inkluder iostream-headerfilen i programmet vårt for å bruke funksjonene som er definert i den.
  2. Inkluder std-navneområdet for å bruke klassene uten å kalle det.
  3. Lag en struktur som heter Person.
  4. Begynnelsen av strukturkroppen.
  5. Opprett et strukturmedlem kalt statsborgerskap av typen heltall.
  6. Opprett et strukturmedlem kalt alder av typen heltall.
  7. Slutten av strukturkroppen.
  8. Kalle hoved()-funksjonen. Programlogikken skal legges til i hoveddelen av denne funksjonen.
  9. Lag en forekomst av strukturen Person og gi den navnet p.
  10. Sett verdien av struct-medlemsborgerskap til 1.
  11. Sett verdien av strukturmedlemsalderen til 27.
  12. Skriv ut verdien av struct-medlemsborgerskapet på konsollen sammen med annen tekst.
  13. Skriv ut verdien av struct-medlemsalderen på konsollen sammen med annen tekst.
  14. Programmet skal returnere en verdi hvis det kjører vellykket.
  15. 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:

Tips til struktur

Her er et skjermbilde av koden:

Tips til struktur

Kodeforklaring:

  1. Inkluder iostream-headerfilen i programmet vårt for å bruke funksjonene.
  2. Inkluder std-navneområdet i programmet vårt for å bruke klassene uten å kalle det.
  3. Lag en struktur som heter Lengde.
  4. Start av kroppen til strukturen Lengde.
  5. Opprett et strukturmedlem kalt meter med heltallsdatatype.
  6. Opprett et strukturmedlem kalt centimeter av typen heltall.
  7. Enden av kroppen til strukturen Lengde.
  8. Kalle hoved()-funksjonen.
  9. Start av hoveddelen av hoved()-funksjonen.
  10. Lag en pekervariabel *ptr og normalvariabel l av typen Length.
  11. Lagre adressen til variabel l i vår pekervariabel.
  12. Vis en melding på konsollen som ber brukeren angi verdien for variable målere.
  13. Les verdien angitt av brukeren via tastaturet. Medlemsfunksjonsmålerne nås her ved hjelp av pekervariabelen.
  14. Vis en melding på konsollen som ber brukeren angi verdien for variable centimeter.
  15. Les verdien angitt av brukeren via tastaturet. Medlemfunksjonen centimeter nås her ved hjelp av pekervariabelen.
  16. Vis verdiene lest fra brukeren på konsollen sammen med annen tekst.
  17. Programmet må returnere en verdi ved vellykket utførelse.
  18. 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:

Struktur som funksjonsargument

Her er et skjermbilde av koden:

Struktur som funksjonsargument

Kodeforklaring:

  1. Inkluder iostream-header-filen i filen vår. Vi vil da bruke funksjonene uten å få feil.
  2. Inkluder std-navneområdet i programmet vårt for å bruke klassene. Vi trenger ikke å kalle navneområdet for å bruke klassene.
  3. Lag en struktur som heter Person.
  4. Start av kroppen til strukturpersonen.
  5. Opprett et medlem av struct Person. Medlemmet heter statsborgerskap og er av typen heltall.
  6. Opprett et medlem av struct Person. Medlemmet heter alder og er av typen heltall.
  7. Slutt på kroppen til struktur Person.
  8. Lag en funksjon som tar forekomsten av struct Person, p, som argument.
  9. Ring hovedfunksjonen. { markerer begynnelsen på hoveddelen av funksjonen main().
  10. Lag en forekomst av struct Person og gi den navnet p.
  11. Få tilgang til strukturmedlemsvariabelen statsborgerskap ved å bruke forekomsten av strukturen, p, og tilordne den verdien 1.
  12. Få tilgang til strukturmedlemsvariabelen alder ved å bruke forekomsten av strukturen, p, og tilordne den verdien 27.
  13. Kall funksjonen og send til den forekomsten av strukturen Person, p, som argument.
  14. Funksjonen må returnere en verdi ved vellykket kjøring.
  15. Slutten av hoveddelen av hoved()-funksjonen.
  16. Lag kroppen til funksjonen.
  17. Starten av kroppen til funksjonen.
  18. Få tilgang til struct-medlemsborgerskapsverdien og skriv den ut på konsollen sammen med annen tekst.
  19. Få tilgang til aldersverdien for struct-medlemmet og skriv den ut på konsollen sammen med annen tekst.
  20. 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.