structure’in memory’yi daha az kullanan halidir. icindeki degiskenlerden ayni anda sadece birini kullanabilir.
#include <stdio.h>
#include <string.h>
union u_tag {
int ival;
float fval;
char sval;
};
int main()
{
union u_tag U_TAG;
printf("%d\n", sizeof(U_TAG)); //prints 4
U_TAG.ival = 3300;
printf("%d\n", U_TAG.ival); //prints 3300
U_TAG.sval = 35;
printf("%d\n", U_TAG.ival); //prints 3107
printf("%d\n", U_TAG.sval); //prints 35
return 0;
}
yukaridaki kodda sval degerine 35 degeri ataninca, 3300 degerinin atandigi ival degeri 3107 degerine degisiyor. cunku ayni anda sadece bir degisken kullanilabiliyor. union degil de structure kullanilsaydi bu degisim olmazdi. ama union’un structure’a gore da avantaji memory’den kazandirmasi.