logo

Structuri în C++

Adesea, întâlnim situații în care trebuie să stocăm un grup de date, fie de tipuri de date similare, fie de tipuri de date nesimilare. Am văzut tablouri în C++ care sunt folosite pentru a stoca seturi de date de tipuri similare de date în locații de memorie adiacente.
Spre deosebire de Arrays, Structuri în C++ sunt tipuri de date definite de utilizator care sunt utilizate pentru a stoca un grup de articole de tipuri de date nesimilare.

Ce este o structură?



O structură este un tip de date definit de utilizator în C/C++. O structură creează un tip de date care poate fi folosit pentru a grupa articole de tipuri posibil diferite într-un singur tip.

Structuri în C++

Cum se creează o structură?



Cuvântul cheie „struct” este folosit pentru a crea o structură. Sintaxa generală pentru a crea o structură este prezentată mai jos:

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

Structurile din C++ pot conține două tipuri de membri:

    Membru de date: acești membri sunt variabile normale C++. Putem crea o structură cu variabile de diferite tipuri de date în C++. Funcții membre: acești membri sunt funcții normale C++. Alături de variabile, putem include și funcții în interiorul unei declarații de structură.

Exemplu :



cum să găsești aplicații ascunse pe Android

C++




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

>

>

În structura de mai sus, membrii datelor sunt trei variabile întregi de stocat numărul rolei, vârsta și notele a oricărui student și funcția de membru este printDetalii() care imprimă toate detaliile de mai sus ale oricărui student.

Cum se declară variabilele de structură?

O variabilă de structură poate fi declarată fie cu declarația de structură, fie ca o declarație separată ca tipurile de bază.

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

>

>

Notă: În C++, cuvântul cheie struct este opțional înainte de declararea unei variabile. În C, este obligatoriu.

Cum să inițializezi membrii structurii?
Membrii structurii nu poate fi initializat cu declaratie. De exemplu, următorul program C eșuează la compilare.
Dar este considerat corect în C++11 și mai sus.

C++




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

>

cate saptamani pe luna

>

Motivul erorii de mai sus este simplu, atunci când un tip de date este declarat, nu i se alocă memorie. Memoria este alocată numai atunci când sunt create variabile.

Membrii structurii pot fi inițializați cu declarație în C++. De exemplu, următorul program C++ se execută cu succes fără a arunca nicio eroare.

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>

Membrii structurii pot fi inițializați folosind acolade „{}”. De exemplu, următoarea este o inițializare validă.

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

>

>


Cum se accesează elementele structurii?
Membrii structurii sunt accesați folosind operatorul punct (.).

C++


excepții java



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

>

>

Ieșire

x = 20, y = 1>

Ce este o serie de structuri?

Ca și alte tipuri de date primitive, putem crea o serie de structuri.

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

>

>

Ieșire

10 20>


Ce este un pointer de structură?
Ca și tipurile primitive, putem avea pointer către o structură. Dacă avem un pointer către structură, membrii sunt accesați folosind operatorul săgeată ( -> ) în loc de operatorul punct (.).

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

>

>

Ieșire

1 2>

Ce este alinierea elementelor structurii?
Vedea Aflați mai multe despre diferențele dintre Structuri și Clasă în C++ .