a640a0dd9a | ||
---|---|---|
README.md |
README.md
Strutture in C
Le strutture in C sono un tipo di dato che permette di raggruppare variabili che sono correlate tra di loro e che sono di diversi tipi. Sono utili per rappresentare oggetti reali o dati correlati. In questo caso come esempio useremo una struttura per rappresentare una persona, con i campi nome, cognome e età.
Definizione di una struttura
Per definire una struttura, si utilizza struct
seguita dal nome della struttura e dentro si va a inserire "un blocco di codice" che contiene le dichiarazioni delle variabili.
struct Persona {
char nome[10];
char cognome[10];
int eta;
};
Dichiarazione di una variabile di struttura
Per dichiarare una variabile di struttura, si utilizza la parola chiave struct seguita dal nome della struttura e dal nome della variabile.
struct Persona p1;
-
Accesso ai membri di una struttura
Per accedere ai membri di una struttura, si utilizza l'operatore
.
seguito dal nome del membro.p1.eta = 30;
Assegnazione di stringhe ai membri di una struttura
Per assegnare una stringa a un membro di una struttura, non è possibile utilizzare l'operatore di assegnazione =
direttamente. Questo perché i campi di stringa in una struttura sono rappresentati come array di caratteri, e in C non è possibile assegnare una stringa a un array di caratteri con =
. Invece, si deve utilizzare la funzione strcpy()
della libreria string.h.
#include <string.h>
struct Persona p1;
strcpy(p1.nome, "Luca");
strcpy(p1.cognome, "Rossi");
Stampa dei dati di una struttura
Per stampare i dati di una struttura si possono usare 2 metodi:
-
Stampa i dati direttamente:
printf("Nome: %s\n", p1.nome); printf("Cognome: %s\n", p1.cognome); printf("Eta: %d\n", p1.eta);
Questo metodo è utile se si vuole stampare i dati di una struttura in un punto specifico del codice. Ma se dobbiamo andare a stampare tanti dati di una struttura, questo metodo può diventare ripetitivo e ingombrante.
-
Creare una funzione che stampa i dati di una struttura:
void StampaPersona(struct Persona p) { printf("Nome: %s\n", p.nome); printf("Cognome: %s\n", p.cognome); printf("Eta: %d\n", p.eta); }
Questo metodo è utile se si vuole stampare i dati di una struttura in più punti del codice. Inoltre, se si vuole stampare i dati di più strutture, si può passare la struttura come argomento alla funzione.