Boa tarde!
Gostaria de entender mais sobre o funcionamento de union. Eu percebo que ela tem campos tais como uma struct. Porém, diferentemente desta, ela só parece poder ter um campo devidamente preenchido...
Obrigado pela atenção!
Boa tarde!
Gostaria de entender mais sobre o funcionamento de union. Eu percebo que ela tem campos tais como uma struct. Porém, diferentemente desta, ela só parece poder ter um campo devidamente preenchido...
Obrigado pela atenção!
Salve,
Vejam se o exemplo a seguir esclarece a diferença
#include <stdio.h> typedef struct exemploStruct Estrutura; struct exemploStruct { char c; int i; float x; }; typedef union exemploUnion Uniao; union exemploUnion { char c; int i; float x; }; int main() { Estrutura e; Uniao u; /* e.c, e.i e e.x sao 3 variaveis distintas */ printf("------------------------------------------\n"); printf("sizeof(Estrutura) = %d\n", sizeof(Estrutura)); e.c = 'a'; e.i = 11; e.x = 22; printf(" e.c='%c'\n e.i=%d\n e.x=%f\n", e.c, e.i, e.x); /* u.c, e.i e u.x compartilham o mesmo espaço na memoria que pode armazenar apenas um valor.*/ printf("------------------------------------------\n"); printf("sizeof(Uniao) = %d\n", sizeof(Uniao)); u.c = 'a'; u.i = 11; /* isto destroi o 'a' */ u.x = 22; /* isto destroi o 11 */ printf(" u.c='%c'\n u.i=%d\n u.x=%f\n", u.c, u.i, u.x); return 0; } SAÍDA DO PROGRAMA: ------------------------------------------ sizeof(Estrutura) = 12 e.c='a' e.i=11 e.x=22.000000 ------------------------------------------ sizeof(Uniao) = 4 u.c='' u.i=1102053376 u.x=22.000000