logo

Štruktúry v C++

Často sa stretávame so situáciami, keď potrebujeme uložiť skupinu údajov, či už ide o podobné alebo nepodobné typy údajov. Videli sme polia v C++, ktoré sa používajú na ukladanie súborov podobných dátových typov v súvislých pamäťových miestach.
Na rozdiel od Arrays, Štruktúry v C++ sú užívateľom definované dátové typy, ktoré sa používajú na ukladanie skupiny položiek nepodobných dátových typov.

Čo je štruktúra?



Štruktúra je užívateľsky definovaný dátový typ v C/C++. Štruktúra vytvára dátový typ, ktorý možno použiť na zoskupenie položiek možno rôznych typov do jedného typu.

Štruktúry v C++

Ako vytvoriť štruktúru?



Kľúčové slovo „struct“ sa používa na vytvorenie štruktúry. Všeobecná syntax na vytvorenie štruktúry je uvedená nižšie:

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

Štruktúry v C++ môžu obsahovať dva typy členov:

    Dátový člen: Tieto členy sú normálne premenné C++. V C++ môžeme vytvoriť štruktúru s premennými rôznych dátových typov. Funkcie členov: Tieto členy sú normálne funkcie C++. Spolu s premennými môžeme do deklarácie štruktúry zahrnúť aj funkcie.

Príklad :



načítanie javascriptu

C++




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

>

>

Vo vyššie uvedenej štruktúre sú dátovými členmi tri celočíselné premenné na uloženie číslo rolky, vek a známky akéhokoľvek študenta a členskou funkciou je printDetails() ktorá vytlačí všetky vyššie uvedené údaje o akomkoľvek študentovi.

Ako deklarovať štruktúrne premenné?

Štruktúrna premenná môže byť deklarovaná buď deklaráciou štruktúry alebo ako samostatná deklarácia ako 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 kľúčové slovo struct nepovinné pred v deklarácii premennej. V C je to povinné.

Ako inicializovať členov štruktúry?
Členovia štruktúry nemôže byť inicializované deklaráciou. Napríklad nasledujúci program C zlyhá pri kompilácii.
Ale považuje sa za správne v C++ 11 a vyššie.

C++




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

>

>

Dôvod vyššie uvedenej chyby je jednoduchý, keď je deklarovaný dátový typ, nie je preň pridelená žiadna pamäť. Pamäť je alokovaná iba vtedy, keď sú vytvorené premenné.

Členy štruktúry možno inicializovať deklaráciou v C++. Napríklad nasledujúci program v jazyku C++ sa úspešne spustí bez toho, aby vyvolal akúkoľvek chybu.

C++




diana ankudinová
// 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 štruktúry možno inicializovať pomocou zložených zátvoriek „{}“. Nasleduje napríklad platná inicializácia.

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

>

>


Ako získať prístup k prvkom štruktúry?
K členom štruktúry sa pristupuje pomocou operátora bodka (.).

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

>

>

Výkon

x = 20, y = 1>

Čo je to rad štruktúr?

Rovnako ako iné primitívne dátové typy môžeme vytvoriť pole štruktúr.

C++




stream filtra java

#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ýkon

10 20>


Čo je ukazovateľ štruktúry?
Rovnako ako primitívne typy môžeme mať ukazovateľ na štruktúru. Ak máme ukazovateľ na štruktúru, k členom sa pristupuje pomocou operátora šípka ( -> ) namiesto operátora bodka (.).

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ýkon

1 2>

Čo je zarovnanie členov štruktúry?
Pozri Získajte viac informácií o rozdieloch medzi štruktúrami a triedami v C++ .