C++ Strukturera med exempel

Vad är en struktur i C++?

A STRUKT är en C++ datastruktur som kan användas för att tillsammans lagra element av olika datatyper. I C++, är en struktur en användardefinierad datatyp. Strukturen skapar en datatyp för att gruppera objekt av olika datatyper under en enda datatyp.

Till exempel:

Anta att du behöver lagra information om någon, deras namn, medborgarskap och ålder. Du kan skapa variabler som namn, medborgarskap och ålder för att lagra data separat.

Du kan dock behöva lagra information om många personer i framtiden. Det betyder att variabler för olika individer kommer att skapas. Till exempel namn1, medborgarskap1, ålder1 etc. För att undvika detta är det bättre att skapa en struktur.

När ska man använda en struktur?

Här är några anledningar till att använda struktur i C++.

  • Använd en struct när du behöver lagra element av olika datatyper under en datatyp.
  • C++ strukturer är en värdetyp snarare än att vara en referenstyp. Använd en struktur om du inte har för avsikt att ändra dina data efter att du skapat dem.

C++ Strukturinitiering

För att skapa en C++ struktur använder vi nyckelordet struct, följt av en identifierare. Identifieraren blir namnet på strukturen. Här är syntaxen för att skapa en C++ struktur:

Syntax:

struct struct_name  
{  
     // struct members
}   

I ovanstående syntax har vi använt nyckelordet struct. struct_name är namnet på strukturen.

Strukturelementen läggs till inom lockiga hängslen. Dessa medlemmar tillhör troligen olika datatyper.

Till exempel:

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

I exemplet ovan är Person en struktur med tre medlemmar. Medlemmarna inkluderar namn, medborgarskap och ålder. En medlem är av char-datatyp, medan de återstående 2 är heltal när en struktur skapas, minne tilldelas inte. Minne tilldelas endast efter att en variabel har lagts till i strukturen.

Skapa strukturinstanser

I exemplet ovan har vi skapat en struktur som heter Person. Vi kan skapa en structvariabel enligt följande:

Person p;

P är en strukturvariabel av typen Person. Vi kan använda denna variabel för att komma åt medlemmarna i strukturen.

Tillgång till strukturmedlemmar

För att komma åt struct-medlemmarna använder vi instansen av struct- och punktoperatorn (.). Till exempel, för att komma åt medlemsåldern för struct Person:

p.age = 27;

Vi har nått medlemsåldern för struct Person med hjälp av structs instans, sid. Vi har då satt värdet på medlemsåldern till 27 år.

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

Produktion:

Tillgång till strukturmedlemmar

Här är en skärmdump av koden:

Tillgång till strukturmedlemmar

Kodförklaring:

  1. Inkludera iostream-huvudfilen i vårt program för att använda funktionerna som definieras i den.
  2. Inkludera std-namnområdet för att använda dess klasser utan att anropa det.
  3. Skapa en struktur med namnet Person.
  4. Början av strukturkroppen.
  5. Skapa en strukturmedlem med namnet medborgarskap av typen heltal.
  6. Skapa en strukturmedlem med namnet ålder av typen heltal.
  7. Slutet på strukturkroppen.
  8. Anropa main()-funktionen. Programlogiken bör läggas till i kroppen av denna funktion.
  9. Skapa en instans av strukturen Person och ge den namnet p.
  10. Sätt värdet på structmedlemsmedborgarskap till 1.
  11. Ställ in värdet för strukturmedlemsåldern till 27.
  12. Skriv ut värdet av structmedlemsmedborgarskapet på konsolen tillsammans med annan text.
  13. Skriv ut värdet på structmedlemmens ålder på konsolen tillsammans med annan text.
  14. Programmet bör returnera ett värde om det körs framgångsrikt.
  15. Slutet på main()-funktionen.

Tips på struktur

Det är möjligt att skapa en pekare som pekar på en struktur. Det liknar hur pekare som pekar på inbyggda datatyper som int, float, double, etc. skapas. Observera att en pekare in C++ kommer att lagra en minnesplats.

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

Produktion:

Tips på struktur

Här är en skärmdump av koden:

Tips på struktur

Kodförklaring:

  1. Inkludera iostream-huvudfilen i vårt program för att kunna använda dess funktioner.
  2. Inkludera std-namnutrymmet i vårt program för att använda dess klasser utan att anropa det.
  3. Skapa en struktur som heter Length.
  4. Start av strukturens kropp Längd.
  5. Skapa en strukturmedlem med namnet meter med heltalsdatatyp.
  6. Skapa en strukturmedlem med namnet centimeter av typen heltal.
  7. Slutet på strukturens kropp Längd.
  8. Anropa main()-funktionen.
  9. Början av huvuddelen av funktionen main().
  10. Skapa en pekarvariabel *ptr och normalvariabel l av typen Length.
  11. Lagra adressen för variabel l i vår pekarvariabel.
  12. Visa ett meddelande på konsolen som ber användaren att ange värdet för variabla mätare.
  13. Läs värdet som användaren matat in via tangentbordet. Medlemsfunktionsmätarna nås här med hjälp av pekarvariabeln.
  14. Visa ett meddelande på konsolen som ber användaren att ange värdet för variabla centimeter.
  15. Läs värdet som användaren matat in via tangentbordet. Medlemsfunktionen centimeter nås här med hjälp av pekarvariabeln.
  16. Visa värdena lästa från användaren på konsolen tillsammans med annan text.
  17. Programmet måste returnera ett värde vid framgångsrikt genomförande.
  18. Slutet på huvuddelen av funktionen main().

Struktur som funktionsargument

Du kan skicka en struktur till en funktion som ett argument. Detta görs på samma sätt som att föra ett vanligt argument. Strukturvariablerna kan också skickas till en funktion. Ett bra exempel är när du behöver visa värdena för strukturmedlemmar. Låt oss demonstrera detta:

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

Produktion:

Struktur som funktionsargument

Här är en skärmdump av koden:

Struktur som funktionsargument

Kodförklaring:

  1. Inkludera iostream-huvudfilen i vår fil. Vi kommer då att använda dess funktioner utan att få fel.
  2. Inkludera std-namnområdet i vårt program för att använda dess klasser. Vi behöver inte anropa namnområdet för att använda dess klasser.
  3. Skapa en struktur med namnet Person.
  4. Början av strukturpersonens kropp.
  5. Skapa en medlem i struct Person. Medlemmen heter medborgarskap och är av typen heltal.
  6. Skapa en medlem i struct Person. Medlemmen heter ålder och är av typen heltal.
  7. Slutet på strukturen Person.
  8. Skapa en funktion som tar instansen av struct Person, p, som argument.
  9. Ring huvudfunktionen. { markerar början på huvuddelen av funktionen main().
  10. Skapa en instans av struct Person och ge den namnet p.
  11. Få åtkomst till structmedlemsvariabeln medborgarskap genom att använda instansen av struct, p, och tilldela den värdet 1.
  12. Få åtkomst till structmedlemsvariabeln ålder genom att använda instansen av struct, p, och tilldela den värdet 27.
  13. Anropa funktionen och skicka till den instansen av strukturen Person, p, som argument.
  14. Funktionen måste returnera ett värde vid framgångsrik exekvering.
  15. Slutet på huvuddelen av funktionen main().
  16. Skapa huvuddelen av funktionen.
  17. Början av kroppen av funktionen.
  18. Få tillgång till struct-medlemsmedborgarskapsvärdet och skriv ut det på konsolen tillsammans med annan text.
  19. Få åtkomst till structmedlemmens åldersvärde och skriv ut det på konsolen tillsammans med annan text.
  20. Slutet på funktionskroppen.

Begränsning av en C++ struktur

Följande är begränsningarna för strukturer:

  • Strukturdatatypen kan inte behandlas som inbyggda datatyper.
  • OperaTors som + - och andra kan inte användas på strukturvariabler.
  • Strukturer stöder inte att dölja data. Medlemmarna i en struktur kan nås av vilken funktion som helst oavsett dess omfattning.
  • Statiska delar kan inte deklareras inuti strukturkroppen.
  • Konstruktörer kan inte skapas inuti en struktur.

Sammanfattning

  • En struct är en datastruktur som lagrar dataelement som tillhör olika typer.
  • Medan en array lagrar dataelement av liknande typ, lagrar en struktur dataelement av olika typer.
  • En struct ska användas när dataelementen inte förväntas ändra värde.
  • Medlemmarna i en struktur nås med operatorn punkt (.).
  • Vi måste skapa en instans av strukturen.
  • För att skapa en C++ struct använder vi nyckelordet struct.
  • Pekare som pekar på en struktur skapas på samma sätt som pekare som pekar på vanliga typer skapas.
  • En struct kan skickas som ett argument till en funktion på samma sätt som vanliga funktioner skickas.