Unione
Un'unione gli concede un senso guardare gli stessi dati con differenti tipi, o usare gli stessi dati con differenti nomi. I sindacati sono simili alle strutture. Un'unione è dichiarata ed usata negli stessi sensi che una struttura è.
Un'unione differisce da da una struttura in quell'soltanto dei relativi membri può essere usata alla volta. Il motivo per questo è semplice. Tutti i membri di un'unione occupano la stessa zona della memoria. Sono posti in cima a vicenda.
I sindacati sono definiti e dichiarati allo stesso modo delle strutture. L'unica differenza nelle dichiarazioni è che l'unione di parola chiave è usata anziché struct. Per definire un'unione semplice di un carbone variabile e di una variabile di numero intero, scrivereste quanto segue:
union shared {
char c;
int i;
};
Questa unione, compartecipe, può essere usata per generare i casi di un'unione che può tenere un valore c del carattere o un valore i. di numero intero. Ciò è O circostanza. Diverso di una struttura che terrebbe entrambi i valori, l'unione può tenere soltanto un valore alla volta.
Un'unione può essere inizializzata sulla relativa dichiarazione. Poiché soltanto un membro può essere usato alla volta e soltanto uno può essere inizializzato. Per evitare la confusione, soltanto il primo membro dell'unione può essere inizializzato. Il seguente codice mostra un caso dell'unione comune che è dichiarata ed inizializzata:
union shared generic_variable = {`@'};
Notare che l'unione generic_variable è stata inizializzata appena poichè il primo membro di una struttura sarebbe inizializzato.
I diversi membri del sindacato possono essere usati nello stesso senso che i membri della struttura possono essere usati usando l'operatore del membro (.). Tuttavia, ci è una differenza importante nei membri d'accesso del sindacato.
Soltanto un membro del sindacato dovrebbe essere raggiunto alla volta. Poiché un'unione immagazzina i relativi membri in cima a vicenda, è importante accedere a soltanto un membro alla volta.
|