Programar em C/União
Origem: Wikilivros, livros abertos por um mundo aberto.
| Esta página precisa ser reciclada (discuta). Ao melhorá-la, você estará ajudando o Wikilivros. |
Tabela de conteúdo |
[editar] Unions
As unions são muito parecidas com as estruturas, estas guardam variáveis de várias tipologias. e portanto guardam cada variável de acordo com a sua tipologia, ie, se tivermos uma variável membro que é um int e outro float, ela guarda exactamente de acordo com essa tipologia. O que se passa aqui é que vai guardar as variáveis todas com uma única tipologia que é aquela tipologia que ocupa mais espaço dentro das tipoogias das variáveis membro. ou seja se tivermos uma variavel membro int e outra float , a union vai guardar estas variáveis como fossem as duas float.
[editar] Declaração
union mytypes_t
{
char c;
int i;
float f;
} mytypes;
Se fosse uma estrutura tínhamos algo como:
| mytypes_t | char c | int i | float f |
| mytypes |
Como é uma union temos
| mytypes_t | float c | float i | float f |
| mytypes |
[editar] Unions com estruturas
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 |
Pergunta: não apanhei isto! repare que a estrutura não tem nome
[editar] Anonymous unions – estruturas com unions
structure with regular union structure with anonymous union
struct
{
char title[50];
char author[50];
union
{
float dollars;
int yens;
} price;
} book; 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 aceder aos seus membros directamente através dos nomes dos membros.
book.price.dollars book.price.yens book.dollars book.yens