C/Unións

En Galilibros, o Wikibooks en galego.
< C
Saltar ata a navegación Saltar á procura
C
← Volver a Estruturas Unións Seguir con Enumeracións


As unións son similares ás estruturas. A diferencia entre as estruturas e as unións é que mentres que nas estruturas cada elemento ocupa un espazo de seu na memoria, nas unións os elementos comparten o mesmo espazo na memoria. A sintaxe fundamental da definición dunha unión sería a seguinte:

union identificador {
  tipo1 variable1;
  tipo2 variable2;
  // ...
  tipon variablen;
};

Cómpre botarlle unha ollada á información sobre a definición e uso das estruturas, dado que as unións e as estruturas trabállanse da mesma forma, cambiando a palabra clave struct por union.

Tomando a sintaxe fundamental anterior como exemplo, pénsese que, dado que variable1 e variable2 ocupan o mesmo espazo na memoria, non se pode acceder aos dous á vez. Alterar o valor dun dos elementos altera o valor do outro, ás veces con resultados inesperados.

O tamaño dunha unión é o tamaño do meirande dos seus elementos. O tamaño é precisamente unha das principais razóns para o uso de unións, dado que permiten aforrar memoria para elementos que se sabe nunca van utilizarse ao mesmo tempo no programa. Outro uso, quizais menos problemático, é o de crear variables que poden representarse de varias maneiras distintas.

Para comprender este último uso nada mellor que un exemplo: un enderezo IP. Na biblioteca de sockets, os enderezos IP poden representarse coma unha matriz de catro octetos (char) ou coma un enteiro (int):

union enderezo_IP {
   int  s_long;
   char s_byte[4];
};

Mediante o uso desta unións permítese traballar cos enderezos IP dunha forma fácil para as persoas (os catro octetos), sen dificultar o procesamento interno (co valor enteiro).


C
← Volver a Estruturas Unións Seguir con Enumeracións