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.

  • ๐Ÿ“ฆ Ulike datatyper: En struktur grupperer variabler av ulike typer under ett brukerdefinert navn.
  • ๐Ÿ”‘ struct-nรธkkelord: Definer en struktur med nรธkkelordet struct, og list deretter opp medlemmer inni krรธllparenteser.
  • ๐Ÿงฑ Opprette instanser: ร… skrive Person p lager en struct-variabel og tildeler minnet dens.
  • ๐ŸŽฏ Punktoperator: Les eller sett et hvilket som helst medlem gjennom instansen, som i p.age = 27.
  • โžก๏ธ Pekere og funksjoner: En struktur fungerer med pekere og sender til en funksjon som et vanlig argument.
  • ๐Ÿค– AI-hjelp: GitHub Copilot og andre AI-assistenter stillaserer strukturdefinisjoner og medlemstilgang fra en kommentar.

C++ struct

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:

Tilgang til strukturmedlemmer

Her er et skjermbilde av koden:

Tilgang til strukturmedlemmer

Code Forklaring:

  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

Code Forklaring:

  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

Code Forklaring:

  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.

Spรธrsmรฅl og svar

In C++ En struktur og en klasse er nesten identiske. Den eneste virkelige forskjellen er standardtilgang: strukturmedlemmer er offentlige som standard, mens klassemedlemmer er private. Begge stรธtter medlemsfunksjoner, konstruktรธrer og arv.

En AC-struktur inneholder bare data, og du mรฅ skrive en struct fรธr hver variabeldeklarasjon. C++ struct kan ogsรฅ inkludere medlemsfunksjoner, konstruktรธrer og tilgangsspesifikatorer, og struct-nรธkkelordet er valgfritt nรฅr variabler deklareres.

Deklarer strukturen, og definer deretter en array av den, for eksempel Person people[3]. Hvert element er en full struktur, og du fรฅr tilgang til medlemmer med people[0].age. Arrayer av strukturer lagrer mange poster av samme type sammen.

En nestet struktur er en struktur som er deklarert som et medlem i en annen struktur. Den grupperer relaterte underdata, for eksempel en datostruktur plassert i en ansattstruktur. Du nรฅr indre medlemmer ved รฅ kjede sammen punktumoperatoren.

Stรธrrelsen er omtrent summen av medlemmene, pluss polstring som kompilatoren legger til for justering, slik at sizeof kan overstige den rรฅ totalen. Medlemsfunksjoner legger ikke til noe. ร… sortere medlemmer etter stรธrrelse reduserer bortkastet polstring.

Bruk piloperatoren nรฅr du holder en peker til en struktur. I stedet for (*ptr).age leser snarveien ptr->age det samme medlemmet. Punktoperatoren fungerer pรฅ en direkte instans, ikke en peker.

Ja. AI-kodingsassistenter gjรธr en kort melding eller kommentar om til en komplett C++ struktur, inkludert medlemmer, konstruktรธrer og felttilgang. Gjennomgรฅ alltid de genererte datatypene og justeringen, siden AI kan overse prosjektspesifikke krav.

Ja. GitHub Copilot foreslรฅr strukturdefinisjoner, medlemsvariabler og punkt- eller piltilgang mens du skriver i editoren. Den hรฅndterer repeterende standardtekst godt, men du bรธr fortsatt bekrefte typer, utfylling og logikk fรธr kompilering.

Oppsummer dette innlegget med: