vale1411
Genius
2 min. di lettura
Vota

Concetti Chiave

  • Le strutture sono tipi di dato che raggruppano variabili di tipo diverso, permettendo una gestione organizzata dei dati.
  • In C, una struct è definita con dichiarazioni di variabili chiamate campi o membri, che necessitano di tipo e nome specificati.
  • È possibile annidare strutture fino a 15 livelli e avere fino a 127 membri in una singola dichiarazione.
  • I dati di una struct sono memorizzati in modo contiguo, con possibili bit di padding per l'allineamento.
  • La forward declaration consente di dichiarare strutture in modo opaco, utile per riferimenti esterni senza rivelare il contenuto.

Tipo dato struct

Le strutture sono tipi di dato che raggruppano una o più variabili, anche di tipo diverso, permettendo così da raggrupparle. Questo tipo di dato è presente in tutti i linguaggi e in alcuni le strutture vengono chiamate record.
In C la dichiarazione di una struct è composto dalla dichiarazioni di variabili dette campi o membri, è necessario che ognuno di essi abbia specificato un tipo ed un nome.
struct [tag] {
;
;
… tipoN>;
};
Il tag è opzionale e se viene dichiarato successivamente si può far riferimento ad esso, altrimenti la variabile è di tipo enumerativo vuoto.
Inoltre è possibile annidare strutture all’interno di altre strutture, anche se con limiti: massimo 15 livelli di annidamento e massimo 127 membri in una singola dichiarazione di struttura.
Queste due strutture sono equivalenti.
In memoria i dati sono salvati in modo contiguo e nello stesso ordine definito nell’implementazione, però tra un campo e l’altro possono essere presenti spazi di memoria di allineamento formati da bit di padding non utilizzabili, per rendere le dimensioni della struttura un multiplo del byte.

L’indirizzo di una struct coincide sempre con l’indirizzo del suo primo membro.

È possibile inizializzare il valore di una variabili di tipo struct o con la lista dei valori stessi tra {{ , }{ , }} o anche assegnando il valore di un’altra variabile dello stesso tipo (con lo stesso tag).
Non è possibile inizializzare i membri di una struttura nella dichiarazione di tipo, ma è possibile inizializzare il valore di una variabile di tipo struct solo al momento della sua dichiarazione, non in seguito.
Per accedere ai campi delle variabili si usa l’operatore “.” . Non è possibile usare gli altri operatori con le variabili, ma solamente con i singoli campi che appartengono alla struttura.
È possibile fare dichiarazioni vuote di tipo struct prima di dichiarare la struttura stessa del tipo (=forward declaration), in questo caso si parla di dichiarazione opaca. Questo tipo di dichiarazione viene utilizzata per mostrare il nome della struttura a file esterni, senza farne vedere il contenuto. La forward declaration può essere usata come struttura autoreferenziale, le strutture contengono campi il cui tipo e la struttura stessa.
In C c’è una limitazione ovvero i campi devono essere di tipo puntatore alla struttura.

Domande da interrogazione

  1. Qual è la funzione principale delle strutture in C?
  2. Le strutture in C servono a raggruppare una o più variabili, anche di tipo diverso, permettendo di gestirle come un unico tipo di dato.

  3. Come si accede ai campi di una variabile di tipo struct?
  4. Si accede ai campi di una variabile di tipo struct utilizzando l'operatore “.”, che permette di operare sui singoli campi della struttura.

  5. Cosa si intende per dichiarazione opaca in C?
  6. La dichiarazione opaca in C si riferisce alla possibilità di fare dichiarazioni vuote di tipo struct prima di dichiarare la struttura stessa, permettendo di mostrare il nome della struttura a file esterni senza rivelarne il contenuto.

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community