Home/post/C - Strutture
Andrea Falla

Andrea Falla

4

07 Apr, 2022

C - Strutture

C - Strutture

Se un array è utile alla gestione di un insieme omogeneo di variabili, una struct (o struttura) è utile alla gestione di un insieme disomogeneo di variabili, ovvero non tutte dello stesso tipo. Durante la definizione di una struct definiamo un record di variabili (dette campi).

Dichiarazione

Per utilizzare una struct, va prima definito il suo record di campi, per poi dichiarare le nostre variabili come nell'esempio:

1
// definiamo la nostra struttura
2
struct macchina {
3
char modello[], marca[];
4
int porte, cavalli;
5
float prezzo;
6
} car1; // possiamo dichiarare una variabile insieme alla
7
// definizione della struct stessa
8
9
struct macchina car2; // possiamo dichiarare una variabile
10
// anche in un secondo momento

Inizializzazione del campi in-line

È possibile inizializzare tutti i campi di una struttura nel momento della sua dichiarazione:

1
// utilizziamo la struttura "macchina" di prima
2
struct macchina car1 = { "F40", "Ferrari", 3, 478, 1000000 };

Accesso ai campi

Dichiarata la variabile di tipo struct, accedere ai singoli campi della struttura è possibile attraverso l'operatore punto (.):

1
void main() {
2
3
struct studente{
4
char nome[20], cognome[20], classe[6];
5
} s1;
6
7
printf("Leggi nome: ");
8
scanf("%s", s1.nome);
9
10
printf("Leggi cognome: ");
11
scanf("%s", s1.cognome);
12
13
printf("Leggi classe: ");
14
scanf("%s", s1.classe);
15
16
printf("Nome studente: %s\nCognome studente: %s\nClasse: %s\n", s1.nome, s1.cognome, s1.classe);
17
}

In alternativa all'inizializzazione in-line possiamo accedere ed inizializzare i valori di una struct in un secondo momento.

Puntatori di struct

Dichiarato il puntatore a struct, accedere ai singoli campi della struttura è possibile attraverso l'operatore freccia, formato da un "-" e un ">"(->):

1
void main() {
2
3
struct studente{
4
char nome[20], cognome[20], classe[6];
5
} *p1 = (struct studente*) malloc(sizeof(struct studente));
6
// utilizziamo la malloc per allocare spazio al puntatore
7
8
printf("Leggi nome: ");
9
scanf("%s", p1->nome);
10
11
printf("Leggi cognome: ");
12
scanf("%s", p1->cognome);
13
14
printf("Leggi classe: ");
15
scanf("%s", p1->classe);
16
}

In definitiva, una struttura è descrivibile come un insieme disomogeneo di variabili dette campi, la cui funzionalità fondamentale è la gestione comoda delle stesse. Per accedere ai campi servono una variabile di tipo struct o un puntatore alla struct stessa, a cui vanno associati l'operatore punto nel primo caso e l'operatore freccia nel secondo.

Andrea Falla

Andrea Falla

Sono uno studente delle superiori. Ho approcciato l'informatica con la scuola, mentre la scrittura è una passione nata con il tempo.

Lascia un commento