C/Unións
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 → |