Introduzione alle Struct in C++
In C++ una struct (abbreviazione di structure) è un tipo di dato composto che permette di raggruppare più variabili di tipo diverso sotto un unico nome.
È molto utile quando dobbiamo rappresentare un oggetto reale che ha più caratteristiche (es. uno studente, una stanza, un libro...).
Motivazione: il problema delle variabili separate
Supponiamo di voler memorizzare i dati di uno studente:
string nome;
int eta;
float media;
Se dobbiamo gestire più studenti, servirebbero tre array separati:
string nomi[30];
int eta[30];
float medie[30];
Questo approccio è scomodo e può generare errori (i dati di uno stesso studente sono sparsi in array diversi).
Soluzione: usare una struct
Con una struct possiamo racchiudere tutti i dati di uno studente in un’unica entità logica:
struct Studente {
string nome;
int eta;
float media;
};
Ora possiamo creare una variabile che rappresenta un singolo studente:
Studente s1;
E accedere ai campi con l’operatore punto .:
s1.nome = "Marco";
s1.eta = 17;
s1.media = 7.8;
cout << s1.nome << " (" << s1.eta << " anni) - Media: " << s1.media;
Output:
Marco (17 anni) - Media: 7.8
Array di struct
Possiamo creare un array di struct per rappresentare una classe intera:
Studente classe[25]; // 25 studenti
Ogni elemento dell array rappresenta uno studente completo (nome, età e media).
Esempio completo
#include <iostream>
#include <string>
using namespace std;
struct Studente {
string nome;
int eta;
float media;
};
int main() {
const int N = 3;
Studente classe[N];
// Inserimento dati
for (int i = 0; i < N; i++) {
cout << "Inserisci nome dello studente " << i+1 << ": ";
cin >> classe[i].nome;
cout << "Età: ";
cin >> classe[i].eta;
cout << "Media: ";
cin >> classe[i].media;
}
// Stampa riepilogo
cout << "\n--- Elenco Studenti ---\n";
for (int i = 0; i < N; i++) {
cout << classe[i].nome << " (" << classe[i].eta << " anni) - Media: " << classe[i].media << endl;
}
return 0;
}
Spiegazione
- La struct Studente definisce il modello di uno studente.
- La variabile
classeè un array di 3 studenti. - Ogni studente ha i propri campi (
nome,eta,media). - Si accede ai campi con la notazione
variabile.campo.
Vantaggi dell uso delle struct
- I dati collegati rimangono insieme in un’unica entità.
- Il codice è più leggibile e organizzato.
- È più facile estendere la struct aggiungendo nuovi campi (es.
indirizzoosesso). - Le struct sono la base per comprendere le classi e la programmazione orientata agli oggetti.
Le struct sono quindi il primo passo per imparare a modellare oggetti reali in C++.