logo

Struktury v C++

Často se setkáváme se situacemi, kdy potřebujeme uložit skupinu dat, ať už podobných datových typů nebo nepodobných datových typů. Viděli jsme pole v C++, která se používají k ukládání sady dat podobných datových typů na souvislých paměťových místech.
Na rozdíl od Arrays, Struktury v C++ jsou uživatelem definované datové typy, které se používají k ukládání skupiny položek nepodobných datových typů.

Co je struktura?



Struktura je uživatelsky definovaný datový typ v C/C++. Struktura vytváří datový typ, který lze použít k seskupení položek možná různých typů do jednoho typu.

Struktury v C++

Jak vytvořit strukturu?



Klíčové slovo ‚struct‘ se používá k vytvoření struktury. Obecná syntaxe pro vytvoření struktury je uvedena níže:

struct structureName{ member1; member2; member3; . . . memberN; };>

Struktury v C++ mohou obsahovat dva typy členů:

    Datový člen: Tyto členy jsou normální proměnné C++. V C++ můžeme vytvořit strukturu s proměnnými různých datových typů. Funkce členů: Tyto členy jsou normální funkce jazyka C++. Spolu s proměnnými můžeme do deklarace struktury zahrnout také funkce.

Příklad :



ahoj světe s javou

C++




// Data Members> int> roll;> int> age;> int> marks;> > // Member Functions> void> printDetails()> {> >cout<<>'Roll = '><' '; cout<<'Age = '< ' '; cout<<'Marks = '< }>

>

>

Ve výše uvedené struktuře jsou datovými členy tři celočíselné proměnné k uložení číslo role, věk a značky kteréhokoli studenta a členskou funkcí je printDetails() která tiskne všechny výše uvedené podrobnosti o jakémkoli studentovi.

Jak deklarovat strukturní proměnné?

Proměnná struktury může být deklarována buď deklarací struktury, nebo jako samostatná deklarace jako základní typy.

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

>

>

Poznámka: V C++ je klíčové slovo struct v deklaraci proměnné nepovinné. V C je to povinné.

Jak inicializovat členy struktury?
Členové struktury nemůže být inicializováno deklarací. Například následující program C selže při kompilaci.
Ale je považováno za správné v C++ 11 a výše.

C++




struct> Point> {> >int> x = 0;>// COMPILER ERROR: cannot initialize members here> >int> y = 0;>// COMPILER ERROR: cannot initialize members here> };>

>

>

Důvod výše uvedené chyby je jednoduchý, když je datový typ deklarován, není pro něj alokována žádná paměť. Paměť je alokována pouze při vytváření proměnných.

Členy struktury lze inicializovat deklarací v C++. Například následující program C++ se úspěšně spustí bez vyvolání jakékoli chyby.

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>

Členy struktury lze inicializovat pomocí složených závorek ‚{}‘. Následuje například platná inicializace.

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

>

stojící

>


Jak získat přístup k prvkům struktury?
Ke členům struktury se přistupuje pomocí operátoru tečka (.).

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

>

>

reverzní řetězec java
Výstup

x = 20, y = 1>

Co je pole struktur?

Stejně jako ostatní primitivní datové typy můžeme vytvořit pole struktur.

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

>

>

Výstup

10 20>


Co je to ukazatel struktury?
Stejně jako primitivní typy můžeme mít ukazatel na strukturu. Pokud máme ukazatel na strukturu, k členům se přistupuje pomocí operátoru šipka ( -> ) místo operátoru tečka (.).

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

>

>

Výstup

1 2>

Co je zarovnání členů struktury?
Vidět Zjistěte více o rozdílech mezi strukturami a třídami v C++ .