MORENO SARDELLA · CORSO BASE
← Tutte le lezioni
Lezione 7

LE STRUCT

Un vettore tiene tanti dati dello stesso tipo. Ma uno studente ha un nome (testo), una media (reale) e le assenze (intero): tipi diversi che descrivono la stessa cosa. La struct serve proprio a questo.

01
L'idea

Raggruppare dati diversi

Una struct è un tipo di dato che crei tu, mettendo insieme più campi (anche di tipo diverso) sotto un unico nome. È come una carta d'identità: un solo oggetto, tante informazioni.

STUDENTE stringnome floatmedia intassenze un tipo, tre campi di tipo diverso
La struct Studente raccoglie tre campi: nome, media e assenze.
02
Sintassi

Definire e usare

La struct si definisce globalmente, dopo using namespace std;. Poi si dichiarano variabili di quel tipo e si accede ai campi con il punto.

struct.cpp
struct Studente {       // definizione del tipo
    string nome;
    float media;
    int assenze;
};

int main() {
    Studente s;            // una variabile di tipo Studente
    s.nome = "Giulia";     // accesso ai campi con il punto
    s.media = 7.5;
    s.assenze = 4;
    cout << s.nome << " ha media " << s.media;
    return 0;
}

Il bello arriva con i vettori di struct: un registro di classe è semplicemente un array di Studente.

vettore_struct.cpp
const int N = 30;
Studente classe[N];
for (int i = 0; i < N; i++) {
    cin >> classe[i].nome >> classe[i].media;
}
// es. media di classe
float somma = 0;
for (int i = 0; i < N; i++) somma += classe[i].media;
cout << "Media di classe: " << somma / N;
Da ricordare — conviene leggere una struct per riferimento (void leggi(Studente &s)): così la funzione modifica davvero la variabile originale. Le struct possono anche essere annidate (una struct con un campo che è un'altra struct).

03
Esercizi

Gli esercizi

Base: una singola struct e i primi vettori di struct. Avanzati: ricerca, ordinamento, struct annidate e struct con vettori (10 esercizi ciascuna).

Struct — basescarica ↓
Struct — avanzatiscarica ↓