logo

Struktūros C++

Dažnai susiduriame su situacijomis, kai turime saugoti duomenų grupę, nesvarbu, ar jie yra panašūs, ar nepanašių tipų. Mes matėme masyvus C++, kurie naudojami saugoti panašių duomenų tipų rinkinius gretimose atminties vietose.
Skirtingai nuo Arrays, Struktūros C++ yra vartotojo apibrėžti duomenų tipai, naudojami nepanašių duomenų tipų elementų grupei saugoti.

Kas yra struktūra?



Struktūra yra vartotojo apibrėžtas duomenų tipas C/C++. Struktūra sukuria duomenų tipą, kurį galima naudoti norint sugrupuoti įvairių tipų elementus į vieną tipą.

Struktūros C++

Kaip sukurti struktūrą?



Struktūrai sukurti naudojamas raktinis žodis „struct“. Bendroji struktūros kūrimo sintaksė yra tokia, kaip parodyta toliau:

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

C++ struktūrose gali būti dviejų tipų narių:

    Duomenų narys: šie nariai yra įprasti C++ kintamieji. C++ kalboje galime sukurti struktūrą su skirtingų duomenų tipų kintamaisiais. Narių funkcijos: šie nariai yra įprastos C++ funkcijos. Kartu su kintamaisiais taip pat galime įtraukti funkcijas į struktūros deklaraciją.

Pavyzdys :



ankstyvieji mukeriai

C++




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

>

>

Aukščiau pateiktoje struktūroje duomenų nariai yra trys sveikieji kintamieji, kuriuos reikia saugoti ritinio numeris, amžius ir ženklai bet kurio studento ir nario funkcija printDetails () kuri spausdina visus aukščiau nurodytus bet kurio mokinio duomenis.

Kaip deklaruoti struktūros kintamuosius?

Struktūros kintamasis gali būti deklaruojamas su struktūros deklaracija arba kaip atskira deklaracija, pavyzdžiui, pagrindiniai tipai.

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

>

>

Pastaba: C++ kalboje raktinis žodis struct yra neprivalomas prieš deklaruojant kintamąjį. C – tai privaloma.

Kaip inicijuoti struktūros narius?
Struktūros nariai negali būti inicijuota deklaracija. Pavyzdžiui, šios C programos kompiliavimas nepavyksta.
Tačiau jis laikomas teisingu C++11 ir naujesnėje kalboje.

C++




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

>

>

Aukščiau pateiktos klaidos priežastis yra paprasta, kai deklaruojamas duomenų tipas, jam neskiriama atminties. Atmintis paskirstoma tik tada, kai sukuriami kintamieji.

Struktūros nariai gali būti inicijuojami deklaruojant C++. Pavyzdžiui, ši C++ programa sėkmingai vykdoma be klaidų.

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>

Struktūros elementus galima inicijuoti naudojant riestinius skliaustus „{}“. Pavyzdžiui, toliau pateikiama galiojanti iniciacija.

plėtinio failas java

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

>

>


Kaip pasiekti struktūros elementus?
Struktūros nariai pasiekiami naudojant taško (.) operatorių.

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

>

>

Išvestis

x = 20, y = 1>

Kas yra struktūrų masyvas?

Kaip ir kiti primityvūs duomenų tipai, galime sukurti daugybę struktūrų.

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

eilutę į json objektą

>

>

Išvestis

10 20>


Kas yra struktūros rodyklė?
Kaip ir primityvūs tipai, mes galime turėti rodyklę į struktūrą. Jei turime rodyklę į struktūrą, nariai pasiekiami naudojant rodyklės ( -> ) operatorių, o ne taško (.) operatorių.

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

>

>

Išvestis

1 2>

Kas yra struktūros elementų išlyginimas?
Matyti Sužinokite daugiau apie C++ struktūrų ir klasės skirtumus .