PDA

Visualizza la versione completa : [C++]Union


Luc@s
11-10-2003, 20:25
Chi mi spiega come funziano le union che nn lo ho ben capito?

LeleFT
11-10-2003, 20:46
Le Union sono delle particolari strutture dati che hanno un po' del Record (Struct).

Servono per far in modo che 2 o pių variabili condividano la stessa area di memoria (in altre parole, per poter accedere alla stessa area di memoria con due tipi di dati differenti, in base alle esigenze).

Ti faccio un esempio: supponi di avere un int a 4 byte.
Quando tu allochi una variabile int, viene allocata una memoria tale da poterla contenere: 4 byte. Ora, supponi di voler sapere esattamente il valore di ogni singolo byte di quei 4.

Bene: dichiari una struct in questo modo:



struct mioInt {
byte uno;
byte due;
byte tre;
byte quattro;
int intero;
};


In questo modo, la variabile intero (dichiarata di tipo int) occupa 4 byte e a condividere questa locazione ci sono anche le 4 variabili di tipo byte.
Tu puoi cosė accedere ad ogni singolo byte di quell'intero semplicemente facendo riferimento al membro uno, due, tre e quattro della struct.

Un disegno dovrebbe aiutare:


|----------- intero ------------|
| uno | due | tre |quattro|
|-------------------------------|


Spero di essere stato chiaro.

Ciao.

Luc@s
11-10-2003, 21:08
tnk!
Ma nel tuo code .................. nn vedo la parola union :(

LeleFT
12-10-2003, 18:03
Infatti ho sbagliato!! :gren: :gren:

Al posto di struct nel codice ci va union.
Ecco la versione corretta:

Dichiari una union in questo modo:


union mioInt {
byte uno;
byte due;
byte tre;
byte quattro;
int intero;
};


Capita...


Ciao.

Loading