In questo tutorial parleremo di un altro tipo di struttura presente in C, ovvero, la struttura unione. Nel capitolo sulle variabili struttura (struct) ho già accennato a questo costrutto che ora approfondiremo.
COS’E’ UNA UNION?
Un’unione è simile ad una struttura, consiste in uno o più membri che possono essere di tipo diverso. Però c’è una differenza: Il compilatore alloca spazio solamente per il membro più grande della union, al quale si sovrapporranno tutti gli altri. Come risultato si ha che: assegnare un valore ad un campo di un costrutto union, andrà ad alterare anche gli altri campi, che conterranno quello stesso valore. ESEMPIO:
union {int k; double i} u;
Ma questo è proprio il modo in cui dichiaravamo la struct!
struct {int k; double i} s;
Dunque la struct e la union differiscono solo per il fatto che: nella struct i membri vengono memorizzati in indirizzi di memoria different, nella union, nello stesso indirizzo.
QUANDO USARE UNA UNION?
Una union può essere usata per risparmiare spazio nelle strutture. Ad esempio, supponiamo di avere un listino prezzi dove soltanto alcune informazioni sono comuni a tutti gli articoli presenti. Se non conoscessimo la union useremmo la struct, ma ciò comporterebbe uno spreco di spazio, che per un piccolo programma è abbastanza irrilevante. Ma immaginate su programmi immensi quanto spazio sprecherebbe.
Per il resto, come già detto, le unioni sono uguali alle struct. Modalità di accesso ai campi, tag di struttura, usare il typedef per creare nuovi tipi di dato ecc. Basta che leggete il capitolo sulle struct! E’ tutto spiegato lì.