Programar em C/União

Origem: Wikilivros, livros abertos por um mundo aberto.

Recycle001.svg 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