union

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.