Programar em C/União
Aspeto
Esta página precisa ser reciclada (discuta). Ao melhorá-la, você estará ajudando o Wikilivros. |
Unions
[editar | editar código-fonte]As unions são muito parecidas com estruturas. As estruturas guardam variáveis de acordo com seu tipo: se tivermos uma variável membro que é um int e outra float, ela guardará exatamente de acordo com seus respectivos tipos.
Em Unions, as variáveis serão armazenadas todas com um único tipo, que é aquele que ocupa mais espaço dentro dos tipos das variáveis membro. Se tivermos uma variável membro int e outra float , a union vai guardar estas variáveis como se ambas fossem float.
Declaração
[editar | editar código-fonte] union mytypes_t
{
int i;
float f;
} mytypes;
Unions com estruturas
[editar | editar código-fonte]Neste exemplo temos unions e estruturas misturados.
union mix_t
{
long l;
struct
{
short hi;
short lo;
} s;
char c[4];
} mix;
mytypes_t | long l | Struct | Char C[4] |
mix |
Repare que a estrutura não tem nome
Anonymous unions – estruturas com unions
[editar | editar código-fonte] // estrutura usando "regular union"
struct {
char title[50];
char author[50];
union {
float dollars;
int yens;
} price;
} book;
// estrutura usando "anonymous union"
struct {
char title[50];
char author[50];
union {
float dollars;
int yens;
};
} book;
Se declararmos uma união sem nome, ela vai ficar anônima e poderemos acessar seus membros diretamente através dos nomes dos membros.
// Uso regular book.price.dollars book.price.yens
// Uso anonimo book.dollars book.yens