Pogosto se znajdemo v situacijah, ko moramo shraniti skupino podatkov, ne glede na to, ali gre za podobne tipe podatkov ali nepodobne tipe podatkov. V C++ smo videli matrike, ki se uporabljajo za shranjevanje nabora podatkov podobnih tipov podatkov na sosednjih pomnilniških lokacijah.
Za razliko od nizov, Strukture v C++ so uporabniško definirani podatkovni tipi, ki se uporabljajo za shranjevanje skupine elementov nepodobnih podatkovnih tipov.
Kaj je struktura?
Struktura je uporabniško definiran podatkovni tip v C/C++. Struktura ustvari podatkovni tip, ki se lahko uporablja za združevanje elementov po možnosti različnih tipov v en sam tip.

Strukture v C++
Kako ustvariti strukturo?
Ključna beseda 'struct' se uporablja za ustvarjanje strukture. Splošna sintaksa za ustvarjanje strukture je prikazana spodaj:
struct structureName{ member1; member2; member3; . . . memberN; };> Strukture v C++ lahko vsebujejo dve vrsti članov:
- Podatkovni član : ti člani so običajne spremenljivke C++. V C++ lahko ustvarimo strukturo s spremenljivkami različnih tipov podatkov. Funkcije članov : ti člani so običajne funkcije C++. Skupaj s spremenljivkami lahko znotraj deklaracije strukture vključimo tudi funkcije.
Primer :
java par
C++
// Data Members> int> roll;> int> age;> int> marks;> > // Member Functions> void> printDetails()> {> >cout<<>'Roll = '><'
'; cout<<'Age = '< '
'; cout<<'Marks = '< }> |
>
>
V zgornji strukturi so podatkovni člani tri cele spremenljivke za shranjevanje številka zvitka, starost in oznake katerega koli študenta in članska funkcija je printDetails() ki natisne vse zgornje podatke katerega koli študenta.
Kako deklarirati strukturne spremenljivke?
Strukturno spremenljivko je mogoče deklarirati s strukturno deklaracijo ali kot ločeno deklaracijo, kot so osnovni tipi.
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> }> |
>
>
Opomba: V C++ je ključna beseda struct neobvezna pred deklaracijo spremenljivke. V C je obvezno.
Kako inicializirati člane strukture?
Člani strukture ne more biti inicializiran z deklaracijo. Naslednji program C ne uspe pri prevajanju.
Vendar velja za pravilno v C++11 in novejšem.
C++
struct> Point> {> >int> x = 0;>// COMPILER ERROR: cannot initialize members here> >int> y = 0;>// COMPILER ERROR: cannot initialize members here> };> |
>
>
Razlog za zgornjo napako je preprost, ko je podatkovni tip deklariran, mu ni dodeljen pomnilnik. Pomnilnik se dodeli le, ko so ustvarjene spremenljivke.
Člane strukture je mogoče inicializirati z deklaracijo v C++. Na primer, naslednji program C++ se uspešno izvaja brez kakršne koli napake.
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>
Člane strukture je mogoče inicializirati z zavitimi oklepaji '{}'. Sledi na primer veljavna inicializacija.
C++
prenos videoposnetkov youtube z vlc
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 };> }> |
>
>
Kako dostopati do strukturnih elementov?
Do členov strukture dostopamo z uporabo operatorja pika (.).
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;> }> |
>
>Izhod
x = 20, y = 1>
Kaj je niz struktur?
Tako kot drugi primitivni podatkovni tipi lahko ustvarimo niz 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;> }> |
>
kaj je obravnavanje izjem v Javi
>Izhod
10 20>
Kaj je kazalec strukture?
Tako kot primitivni tipi imamo lahko tudi mi kazalec na strukturo. Če imamo kazalec na strukturo, do članov dostopamo s puščičnim ( -> ) operatorjem namesto s piko (.).
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; }> |
>
>Izhod
1 2>
Kaj je poravnava členov strukture?
glej Izvedite več o razlikah med strukturami in razredi v C++ .