Vad är en Struct i C ++?
A STRUCT är en C ++ - datastruktur som kan användas för att lagra element av olika datatyper. I C ++ är en struktur en användardefinierad datatyp. Strukturen skapar en datatyp för gruppering av objekt av olika datatyper under en enda datatyp.
Till exempel:
Antag 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.
I denna C ++ -handledning lär du dig:
- Vad är en Struct i C ++?
- När ska jag använda en struktur?
- Initiering av C ++ struktur
- Skapa Struct Instances
- Åtkomst till Struct-medlemmar
- Pekare till struktur
- Strukturera som funktionsargument
- Begränsning av en C ++ - struktur
När ska jag använda en struktur?
Här är några anledningar till att använda struktur i C ++.
- Använd en struktur när du behöver lagra element av olika datatyper under en datatyp.
- C ++ -strukturer är en värdetyp snarare än att vara en referentstyp. Använd en struktur om du inte tänker ändra dina data efter skapandet.
Initiering av C ++ struktur
För att skapa en C ++ - struktur använder vi struct-nyckelordet, 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 struct-nyckelordet. Struct_name är namnet på strukturen.
Struct-medlemmarna läggs till inom lockiga hängslen. Dessa medlemmar tillhör antagligen 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, allokeras inte minnet. Minne allokeras bara efter att en variabel har lagts till i strukturen.
Skapa Struct Instances
I exemplet ovan har vi skapat en struktur med namnet Person. Vi kan skapa en strukturvariabel 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.
Åtkomst till Struct-medlemmar
För att komma åt struct-medlemmarna använder vi instansen av struct och dot (.) -Operatören. 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 strukturs instans, s. Vi har sedan ställt in värdet på medlemsåldern till 27.
Exempel 1:
#includeusing 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:
Här är en skärmdump av koden:
Kodförklaring:
- Inkludera iostream-rubrikfilen i vårt program för att använda de funktioner som definieras i den.
- Inkludera std-namnområdet för att använda sina klasser utan att kalla det.
- Skapa en struktur med namnet Person.
- Början på strukturkroppen.
- Skapa en strukturmedlem med namnet medborgarskap av typen heltal.
- Skapa en struct-medlem med namnet age of type heltal.
- Slut på strukturen.
- Ring huvudfunktionen (). Programlogiken bör läggas till i denna funktion.
- Skapa en instans av strukturen Person och ge den namnet p.
- Ställ in värdet på strukturerat medborgarskap till 1.
- Ställ in värdet på åldern för strukturerad medlem till 27.
- Skriv ut värdet på struct-medborgarskapet på konsolen tillsammans med någon annan text.
- Skriv ut värdet på åldern för structmedlemmar på konsolen tillsammans med någon annan text.
- Programmet ska returnera ett värde om det körs framgångsrikt.
- Slut på huvudfunktionen ().
Pekare till 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 i C ++ lagrar en minnesplats.
Exempel 2:
#includeusing 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:
Här är en skärmdump av koden:
Kodförklaring:
- Inkludera iostream-rubrikfilen i vårt program för att kunna använda dess funktioner.
- Inkludera std-namnområdet i vårt program för att använda sina klasser utan att kalla det.
- Skapa en struktur med namnet Längd.
- Början på kroppen av strukturen Längd.
- Skapa en strukturmedlem med namnet meter av heltaldatatyp.
- Skapa en strukturmedlem med namnet centimeter av typen heltal.
- Slut på kroppen på strukturen Längd.
- Ring huvudfunktionen ().
- Början av huvudfunktionen ().
- Skapa en pekervariabel * ptr och normal variabel l av typen Längd.
- Lagra adressen till variabel l i vår pekervariabel.
- Visa ett meddelande på konsolen där du ber användaren att ange värdet för variabla mätare.
- Läs det värde som användaren angett via tangentbordet. Medlemmens funktionsmätare nås här med pekervariabeln.
- Visa ett meddelande på konsolen och be användaren att ange värdet för variabla centimeter.
- Läs det värde som användaren angett via tangentbordet. Medlemsfunktionens centimeter nås här med hjälp av pekervariabeln.
- Visa värdena som lästs från användaren på konsolen tillsammans med någon annan text.
- Programmet måste returnera ett värde när det har genomförts.
- Slutet på huvudfunktionens () kropp.
Strukturera som funktionsargument
Du kan skicka en struktur till en funktion som ett argument. Detta görs på samma sätt som att skicka ett normalt argument. Struct-variablerna kan också skickas till en funktion. Ett bra exempel är när du behöver visa värdena för struct-medlemmar. Låt oss demonstrera detta:
Exempel 3:
#includeusing 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< Produktion:
Här är en skärmdump av koden:
Kodförklaring:
- Inkludera iostream-rubrikfilen i vår fil. Vi kommer då att använda dess funktioner utan att få fel.
- Inkludera std-namnområdet i vårt program för att använda dess klasser. Vi behöver inte ringa namnområdet för att använda dess klasser.
- Skapa en struktur med namnet Person.
- Början på strukturen av strukturen Person.
- Skapa en medlem av struct Person. Medlemmen heter medborgarskap och är av heltalstyp.
- Skapa en medlem av struct Person. Medlemmarna heter ålder och är av typen heltal.
- Slut på kroppen av struct Person.
- Skapa en funktion som tar instansen av struct Person, p, som argument.
- Ring huvudfunktionen. {Markerar början på huvudfunktionen ().
- Skapa en instans av struct Person och ge den namnet p.
- Få åtkomst till strukturmedlemmets variabla medborgarskap med hjälp av instansen av struct, p och tilldela värdet 1.
- Åtkomst till strukturmedlemsvariabelåldern med instansen av strukturen, p och tilldela den värdet 27.
- Kalla funktionen och vidarebefordra den till instansen av strukturen Person, p, som argument.
- Funktionen måste returnera ett värde efter lyckad körning.
- Slutet på huvudfunktionens () kropp.
- Skapa kroppens funktion.
- Början av kroppens funktion.
- Få åtkomst till värdet på struct-medborgarskapet och skriv ut det på konsolen tillsammans med annan text.
- Åtkomst till åldersvärdet för strukturerad medlem och skriv ut det på konsolen tillsammans med annan text.
- Slutet på funktionskroppen.
Begränsning av en C ++ - struktur
Följande är begränsningar av strukturer:
- Struct-datatypen kan inte behandlas som inbyggda datatyper.
- Operatörer som + - och andra kan inte användas på strukturvariabler.
- Strukturer stöder inte datadöljning. Medlemmarna i en struktur kan nås av vilken funktion som helst oavsett dess omfattning.
- Statiska medlemmar kan inte förklaras inuti strukturkroppen.
- Konstruktörer kan inte skapas inuti en struktur.
Sammanfattning:
- En struktur är en datastruktur som lagrar dataelement som tillhör olika typer.
- Medan en array lagrar dataelement av samma typ, lagrar en struct dataelement av olika typer.
- En struktur bör användas när dataelementen inte förväntas ändra värde.
- Medlemmarna i en struktur nås med dot (.) -Operatören.
- Vi måste skapa en instans av strukturen.
- För att skapa en C ++ struct använder vi struct-nyckelordet.
- Pekare som pekar på en struktur skapas på samma sätt som pekare som pekar på vanliga typer skapas.
- En struktur kan skickas som ett argument till en funktion på samma sätt som vanliga funktioner skickas.