C++ Strukturer med eksempel

⚡ Smart opsummering

Struktur i C++ er en brugerdefineret datatype, der grupperer elementer af forskellige datatyper under et enkelt navn, hvor én variabel kan indeholde relaterede værdier såsom en persons navn, statsborgerskab og alder sammen.

  • 📦 Forskellige datatyper: En struktur grupperer variabler af forskellige typer under ét brugerdefineret navn.
  • 🔑 struct-nøgleord: Definer en struktur med nøgleordet struct, og angiv derefter medlemmer inden for krøllede parenteser.
  • 🧱 Oprettelse af instanser: Når Person p skrives, oprettes en struct-variabel og allokeres dens hukommelse.
  • 🎯 Punktoperator: Læs eller sæt et hvilket som helst medlem gennem instansen, som i p.age = 27.
  • ➡️ Pointere og funktioner: En struktur fungerer med pointere og sender til en funktion som et almindeligt argument.
  • 🤖 AI assistance: GitHub Copilot og andre AI-assistenter scaffolder strukturdefinitioner og medlemsadgang fra en kommentar.

C++ Struktur

Hvad er en struktur i C++?

En STRUKTUR er en C++ datastruktur, der kan bruges til at gemme elementer af forskellige datatyper sammen. I C++, en struktur er en brugerdefineret datatype. Strukturen opretter en datatype for grupperping elementer af forskellige datatyper under en enkelt datatype.

For eksempel:

Antag, at du skal gemme oplysninger om en person, deres navn, statsborgerskab og alder. Du kan oprette variabler som navn, statsborgerskab og alder for at gemme dataene separat.

Du kan dog være nødt til at gemme oplysninger om mange personer i fremtiden. Det betyder, at der vil blive oprettet variabler for forskellige individer. For eksempel navn1, statsborgerskab1, alder1 osv. For at undgå dette er det bedre at oprette en struct.

Hvornår skal man bruge en struktur?

Her er nogle grunde til at bruge struktur i C++.

  • Brug en struct, når du skal gemme elementer af forskellige datatyper under én datatype.
  • C++ strukturer er en værditype i stedet for at være en referencetype. Brug en struktur, hvis du ikke har til hensigt at ændre dine data efter oprettelsen.

C++ Strukturinitialisering

At oprette en C++ struktur, bruger vi nøgleordet struct efterfulgt af en identifikator. Identifikationen bliver navnet på strukturen. Her er syntaksen for oprettelse af en C++ struktur:

Syntaks:

struct struct_name  
{  
     // struct members
}   

I ovenstående syntaks har vi brugt nøgleordet struct. struct_name er navnet på strukturen.

Strukturelementerne tilføjes inden for krøllede seler. Disse medlemmer tilhører sandsynligvis forskellige datatyper.

For eksempel:

struct Person  
{  
    char name[30];  
     int citizenship;  
     int age;  
}  

I ovenstående eksempel er Person en struktur med tre medlemmer. Medlemmerne inkluderer navn, statsborgerskab og alder. Et medlem er af char-datatypen, mens de resterende 2 er heltal, når en struktur oprettes, er der ikke allokeret hukommelse. Hukommelse tildeles kun, efter at en variabel er tilføjet til strukturen.

Oprettelse af strukturforekomster

I ovenstående eksempel har vi oprettet en struktur ved navn Person. Vi kan oprette en struct-variabel som følger:

Person p;

P er en strukturvariabel af typen Person. Vi kan bruge denne variabel til at få adgang til medlemmerne af strukturen.

Adgang til strukturmedlemmer

For at få adgang til struct-medlemmerne bruger vi instansen af ​​struct- og prik-operatoren (.). For at få adgang til medlemsalderen for struct Person:

p.age = 27;

Vi har fået adgang til medlemsalderen for struct Person ved hjælp af structs instans, s. Vi har så sat værdien af ​​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;
}

Output:

Adgang til strukturmedlemmer

Her er et skærmbillede af koden:

Adgang til strukturmedlemmer

Code Forklaring:

  1. Inkluder iostream-header-filen i vores program for at bruge de funktioner, der er defineret i den.
  2. Inkluder std-navneområdet for at bruge dets klasser uden at kalde det.
  3. Opret en struktur med navnet Person.
  4. Begyndelsen af ​​strukturlegemet.
  5. Opret et struct-medlem ved navn statsborgerskab af typen heltal.
  6. Opret et struct-medlem ved navn alder af typen heltal.
  7. Slutningen af ​​strukturlegemet.
  8. Kald funktionen main(). Programlogikken skal tilføjes i denne funktions brødtekst.
  9. Opret en instans af strukturen Person og giv den navnet p.
  10. Indstil værdien af ​​structmedlemsborgerskab til 1.
  11. Indstil værdien af ​​strukturmedlemsalderen til 27.
  12. Udskriv værdien af ​​struct-medlemsborgerskabet på konsollen sammen med en anden tekst.
  13. Udskriv værdien af ​​struct-medlemsalderen på konsollen sammen med anden tekst.
  14. Programmet bør returnere en værdi, hvis det kører med succes.
  15. Slut på main()-funktionen.

Henvisninger til struktur

Det er muligt at oprette en markør, der peger på en struktur. Det svarer til, hvordan pointere, der peger på native datatyper som int, float, double osv. oprettes. Bemærk, at en pointer ind C++ vil gemme en hukommelsesplacering.

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;
}

Output:

Henvisninger til struktur

Her er et skærmbillede af koden:

Henvisninger til struktur

Code Forklaring:

  1. Inkluder iostream-header-filen i vores program for at bruge dens funktioner.
  2. Inkluder std-navneområdet i vores program for at bruge dets klasser uden at kalde det.
  3. Opret en struktur med navnet Længde.
  4. Start af konstruktionens krop Længde.
  5. Opret et struct-medlem med navnet meter med heltalsdatatype.
  6. Opret et struct-medlem ved navn centimeter af typen heltal.
  7. Enden af ​​konstruktionens krop Længde.
  8. Kald funktionen main().
  9. Start af hovedteksten af ​​funktionen main().
  10. Opret en pointervariabel *ptr og normalvariabel l af typen Length.
  11. Gem adressen på variabel l i vores pointer variabel.
  12. Vis en meddelelse på konsollen, der beder brugeren om at indtaste værdien for variable målere.
  13. Læs den værdi, som brugeren har indtastet via tastaturet. Medlemsfunktionsmålerne tilgås her ved hjælp af pointervariablen.
  14. Vis en meddelelse på konsollen, der beder brugeren om at indtaste værdien for variable centimeter.
  15. Læs den værdi, som brugeren har indtastet via tastaturet. Medlemsfunktionen centimeter er her adgang til ved hjælp af pointervariablen.
  16. Vis værdierne læst fra brugeren på konsollen sammen med anden tekst.
  17. Programmet skal returnere en værdi ved vellykket eksekvering.
  18. Slutningen af ​​hoveddelen af ​​funktionen main().

Struktur som funktionsargument

Du kan sende en struct til en funktion som et argument. Dette gøres på samme måde som at bestå et normalt argument. Strukturvariablerne kan også overføres til en funktion. Et godt eksempel er, når du skal vise værdierne for struct-medlemmer. Lad os 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;
}

Output:

Struktur som funktionsargument

Her er et skærmbillede af koden:

Struktur som funktionsargument

Code Forklaring:

  1. Inkluder iostream-header-filen i vores fil. Vi vil derefter bruge dens funktioner uden at få fejl.
  2. Inkluder std-navneområdet i vores program for at bruge dets klasser. Vi behøver ikke kalde navneområdet for at bruge dets klasser.
  3. Opret en struktur med navnet Person.
  4. Start af kroppen af ​​struct Person.
  5. Opret et medlem af struct Person. Medlemmet hedder statsborgerskab og er af typen heltal.
  6. Opret et medlem af struct Person. Medlemmet hedder alder og er af typen heltal.
  7. Slutningen af ​​kroppen af ​​struct Person.
  8. Opret en funktion, der tager forekomsten af ​​struct Person, p, som argument.
  9. Kald hovedfunktionen. { markerer begyndelsen af ​​hoveddelen af ​​funktionen main().
  10. Opret en instans af struct Person og giv den navnet p.
  11. Få adgang til struct-medlemsvariablen statsborgerskab ved at bruge instansen af ​​struct, p, og tildel den værdien 1.
  12. Få adgang til struct-medlemsvariablen alder ved at bruge instansen af ​​struct, p, og tildel den værdien 27.
  13. Kald funktionen og giv den instansen af ​​strukturen Person, p, som argument.
  14. Funktionen skal returnere en værdi ved vellykket udførelse.
  15. Slutningen af ​​hoveddelen af ​​funktionen main().
  16. Opret kroppen af ​​funktionen.
  17. Starten af ​​kroppen af ​​funktionen.
  18. Få adgang til struct-medlemsborgerskabsværdien og udskriv den på konsollen sammen med anden tekst.
  19. Få adgang til struct-medlemsalderens værdi og udskriv den på konsollen sammen med anden tekst.
  20. Slut på funktionslegemet.

Begrænsning af en C++ struktur

Følgende er begrænsningerne for strukturer:

  • Strukturdatatypen kan ikke behandles som indbyggede datatyper.
  • Operators som + - og andre kan ikke bruges på strukturvariabler.
  • Strukturer understøtter ikke dataskjul. Medlemmerne af en struktur kan tilgås af enhver funktion uanset dens omfang.
  • Statiske elementer kan ikke deklareres inde i strukturen.
  • Konstruktører kan ikke oprettes inde i en struktur.

Ofte Stillede Spørgsmål

In C++ En struct og en klasse er næsten identiske. Den eneste reelle forskel er standardadgangen: struct-medlemmer er som standard offentlige, mens klassemedlemmer er private. Begge understøtter medlemsfunktioner, konstruktører og arv.

En AC-struktur indeholder kun data, og du skal skrive en struct før hver variabeldeklaration. C++ struct kan også indeholde medlemsfunktioner, konstruktører og adgangsspecifikationer, og nøgleordet struct er valgfrit, når variabler deklareres.

Deklarer strukturen, og definer derefter et array af den, for eksempel Person people[3]. Hvert element er en fuld struktur, og du tilgår medlemmer med people[0].age. Arrays af strukturer gemmer mange poster af samme type sammen.

En indlejret struktur er en struktur, der er deklareret som et medlem i en anden struktur. Den grupperer relaterede underdata, såsom en datostruktur placeret i en medarbejderstruktur. Du når indre medlemmer ved at kæde punktumoperatoren sammen.

Størrelsen er omtrent summen af ​​dens medlemmer plus den margin, som compileren tilføjer for justering, så sizeof kan overstige den rå total. Medlemsfunktioner tilføjer ingenting. Sortering af medlemmer efter størrelse reducerer spild af margin.

Brug piloperatoren, når du holder en pointer hen til en struktur. I stedet for (*ptr).age læser genvejen ptr->age det samme medlem. Punktoperatoren virker på en direkte instans, ikke en pointer.

Ja. AI-kodningsassistenter forvandler en kort prompt eller kommentar til en komplet C++ struktur, inklusive medlemmer, konstruktører og feltadgang. Gennemgå altid de genererede datatyper og justering, da AI kan overse projektspecifikke krav.

Ja. GitHub Copilot foreslår strukturdefinitioner, medlemsvariabler og adgang med punktum eller pil, mens du skriver i din editor. Den håndterer gentagne standardtekster godt, selvom du stadig bør verificere typer, padding og logik, før du kompilerer.

Opsummer dette indlæg med: