C++ Strukturer med eksempel

Hvad er en struktur i C++?

A STRUKT er en C++ datastruktur, der kan bruges til at gemme elementer af forskellige datatyper sammen. I C++, er en struktur en brugerdefineret datatype. Strukturen opretter en datatype til at gruppere 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.

Det kan dog være nødvendigt 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 struktur.

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

Kodeforklaring:

  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

Kodeforklaring:

  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

Kodeforklaring:

  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.

Resumé

  • En struct er en datastruktur, der gemmer dataelementer, der tilhører forskellige typer.
  • Mens et array gemmer dataelementer af en lignende type, lagrer en struct dataelementer af forskellige typer.
  • En struct skal bruges, når dataelementerne ikke forventes at ændre værdi.
  • Medlemmerne af en struktur tilgås ved hjælp af prik-operatoren (.).
  • Vi skal oprette en instans af strukturen.
  • At oprette en C++ struct, bruger vi nøgleordet struct.
  • Pointere, der peger på en struktur, oprettes på samme måde som, hvordan pointere, der peger på regulære typer, oprettes.
  • En struct kan overføres som et argument til en funktion på samme måde som almindelige funktioner videregives.