Spesso ci imbattiamo in situazioni in cui dobbiamo archiviare un gruppo di dati, sia di tipi di dati simili che di tipi di dati non simili. Abbiamo visto gli array in C++ che vengono utilizzati per archiviare insiemi di dati di tipi di dati simili in posizioni di memoria contigue.
A differenza degli array, Strutture in C++ sono tipi di dati definiti dall'utente che vengono utilizzati per memorizzare gruppi di elementi di tipi di dati non simili.
Cos'è una struttura?
Una struttura è un tipo di dati definito dall'utente in C/C++. Una struttura crea un tipo di dati che può essere utilizzato per raggruppare elementi di tipi possibilmente diversi in un unico tipo.

Strutture in C++
Come creare una struttura?
La parola chiave 'struct' viene utilizzata per creare una struttura. La sintassi generale per creare una struttura è la seguente:
struct structureName{ member1; member2; member3; . . . memberN; };> Le strutture in C++ possono contenere due tipi di membri:
- Membro dati: questi membri sono normali variabili C++. Possiamo creare una struttura con variabili di diversi tipi di dati in C++. Funzioni membro: questi membri sono normali funzioni C++. Insieme alle variabili, possiamo anche includere funzioni all'interno di una dichiarazione di struttura.
Esempio :
comando chown
C++
// Data Members> int> roll;> int> age;> int> marks;> > // Member Functions> void> printDetails()> {> >cout<<>'Roll = '><'
'; cout<<'Age = '< '
'; cout<<'Marks = '< }> |
>
>
Nella struttura precedente, i membri dati sono tre variabili intere da memorizzare numero di rotolo, età e segni di qualsiasi studente e la funzione membro è stampaDettagli() che sta stampando tutti i dettagli di cui sopra di qualsiasi studente.
Come dichiarare le variabili di struttura?
Una variabile di struttura può essere dichiarata con una dichiarazione di struttura o come dichiarazione separata come i tipi base.
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> }> |
>
>
Nota: in C++, la parola chiave struct è facoltativa prima nella dichiarazione di una variabile. In C è obbligatorio.
Come inizializzare i membri della struttura?
Membri della struttura non può essere inizializzato con la dichiarazione. Ad esempio il seguente programma C non riesce nella compilazione.
Ma è considerato corretto in C++11 e versioni successive.
C++
struct> Point> {> >int> x = 0;>// COMPILER ERROR: cannot initialize members here> >int> y = 0;>// COMPILER ERROR: cannot initialize members here> };> |
>
>
Il motivo dell'errore precedente è semplice: quando viene dichiarato un tipo di dati, non viene allocata memoria per esso. La memoria viene allocata solo quando vengono create le variabili.
contare mq distinti
I membri della struttura possono essere inizializzati con una dichiarazione in C++. Ad esempio, il seguente programma C++ viene eseguito correttamente senza generare alcun errore.
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>
I membri della struttura possono essere inizializzati utilizzando le parentesi graffe '{}'. Ad esempio, quella che segue è un'inizializzazione valida.
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 };> }> |
>
>
Come accedere agli elementi della struttura?
È possibile accedere ai membri della struttura utilizzando l'operatore punto (.).
C++
dimensione del testo in lattice
#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;> }> |
>
>Produzione
x = 20, y = 1>
Cos'è un array di strutture?
Come altri tipi di dati primitivi, possiamo creare un array di strutture.
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;> }> |
>
>Produzione
10 20>
Cos'è un puntatore a struttura?
Come i tipi primitivi, possiamo avere un puntatore a una struttura. Se abbiamo un puntatore alla struttura, l'accesso ai membri avviene utilizzando l'operatore freccia (->) anziché l'operatore punto (.).
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; }> |
>
>Produzione
1 2>
Cos'è l'allineamento dei membri della struttura?
Vedere Scopri di più sulle differenze tra strutture e classi in C++ .