Vi kommer ofta i situationer där vi behöver lagra en grupp data oavsett om det är av liknande datatyper eller icke-liknande datatyper. Vi har sett Arrays i C++ som används för att lagra datauppsättningar av liknande datatyper på sammanhängande minnesplatser.
Till skillnad från Arrays, Strukturer i C++ är användardefinierade datatyper som används för att lagra grupper av objekt av icke-liknande datatyper.
Vad är en struktur?
En struktur är en användardefinierad datatyp i C/C++. En struktur skapar en datatyp som kan användas för att gruppera objekt av möjligen olika typer till en enda typ.

Strukturer i C++
Hur skapar man en struktur?
Nyckelordet 'struct' används för att skapa en struktur. Den allmänna syntaxen för att skapa en struktur är som visas nedan:
struct structureName{ member1; member2; member3; . . . memberN; };> Strukturer i C++ kan innehålla två typer av medlemmar:
- Datamedlem: Dessa medlemmar är normala C++-variabler. Vi kan skapa en struktur med variabler av olika datatyper i C++. Medlemsfunktioner: Dessa medlemmar är normala C++-funktioner. Tillsammans med variabler kan vi även inkludera funktioner i en strukturdeklaration.
Exempel :
maskinskriven var och en
C++
// Data Members> int> roll;> int> age;> int> marks;> > // Member Functions> void> printDetails()> {> >cout<<>'Roll = '><'
'; cout<<'Age = '< '
'; cout<<'Marks = '< }> |
>
>
I ovanstående struktur är datamedlemmarna tre heltalsvariabler att lagra rullenummer, ålder och märken av någon elev och medlemsfunktionen är printDetails() vilket är att skriva ut alla ovanstående uppgifter om alla elever.
Hur deklarerar man strukturvariabler?
En strukturvariabel kan antingen deklareras med strukturdeklaration eller som en separat deklaration som bastyper.
C++
// A variable declaration with structure declaration.> struct> Point> {> >int> x, y;> } p1;>// The variable p1 is declared with 'Point'> // A variable declaration like basic data types> struct> Point> {> >int> x, y;> };> int> main()> {> >struct> Point p1;>// The variable p1 is declared like a normal variable> }> |
>
>
Obs: I C++ är nyckelordet struct valfritt före i deklarationen av en variabel. I C är det obligatoriskt.
Hur initierar man strukturmedlemmar?
Strukturmedlemmar kan inte vara initieras med deklaration. Till exempel misslyckas följande C-program i kompileringen.
Men anses vara korrekt i C++11 och uppåt.
C++
Algoritm för rsa
struct> Point> {> >int> x = 0;>// COMPILER ERROR: cannot initialize members here> >int> y = 0;>// COMPILER ERROR: cannot initialize members here> };> |
>
>
Anledningen till ovanstående fel är enkel, när en datatyp deklareras tilldelas inget minne för den. Minne tilldelas endast när variabler skapas.
Strukturmedlemmar kan initieras med deklaration i C++. Till exempel körs följande C++-program framgångsrikt utan att skapa något fel.
C++
// In C++ We can Initialize the Variables with Declaration in Structure.> #include> using> namespace> std;> struct> Point {> >int> x = 0;>// It is Considered as Default Arguments and no Error is Raised> >int> y = 1;> };> int> main()> {> >struct> Point p1;> >// Accessing members of point p1> >// No value is Initialized then the default value is considered. ie x=0 and y=1;> >cout <<>'x = '> << p1.x <<>', y = '> << p1.y< // Initializing the value of y = 20; p1.y = 20; cout << 'x = ' << p1.x << ', y = ' << p1.y; return 0; } // This code is contributed by Samyak Jain> |
>
>
x=0, y=1 x=0, y=20>
Strukturelement kan initieras med hjälp av hängslen '{}'. Följande är till exempel en giltig initiering.
C++
struct> Point {> >int> x, y;> };> int> main()> {> >// A valid initialization. member x gets value 0 and y> >// gets value 1. The order of declaration is followed.> >struct> Point p1 = { 0, 1 };> }> |
>
>
Hur får man tillgång till strukturelement?
Strukturelement nås med punktoperatorn (.).
C++
#include> using> namespace> std;> struct> Point {> >int> x, y;> };> int> main()> {> >struct> Point p1 = { 0, 1 };> >// Accessing members of point p1> >p1.x = 20;> >cout <<>'x = '> << p1.x <<>', y = '> << p1.y;> >return> 0;> }> |
>
>Produktion
x = 20, y = 1>
Vad är en rad strukturer?
Liksom andra primitiva datatyper kan vi skapa en rad strukturer.
C++
#include> using> namespace> std;> struct> Point {> >int> x, y;> };> int> main()> {> >// Create an array of structures> >struct> Point arr[10];> >// Access array members> >arr[0].x = 10;> >arr[0].y = 20;> >cout << arr[0].x <<>' '> << arr[0].y;> >return> 0;> }> |
>
>Produktion
10 20>
Vad är en strukturpekare?
Liksom primitiva typer kan vi ha pekare till en struktur. Om vi har en pekare till struktur, nås medlemmar med piloperatorn (-> ) istället för punktoperatorn (.).
C++
#include> using> namespace> std;> struct> Point {> >int> x, y;> };> int> main()> {> >struct> Point p1 = { 1, 2 };> >// p2 is a pointer to structure p1> >struct> Point* p2 = &p1;> >// Accessing structure members using> >// structure pointer> >cout ' ' return 0; }> |
>
>Produktion
1 2>
Vad är strukturelementjustering?
Ser Lär dig mer om skillnaderna mellan strukturer och klass i C++ .
grundläggande java-intervjufrågor