Uniones y enumeraciones #15

Bueno, por fin vuelvo después de un largo descanso y mucho estudio y conmigo también regresa el curso de programación de videojuegos. Retomaremos las lecciones justamente por donde las dejamos. Vayamos, sin más dilación, directamente al grano.



Capítulo 15: Uniones y enumeraciones

En el capítulo anterior vimos las estructuras o registros, que son formas de almacenar información, ahora veremos las uniones y las enumeraciones, dos conceptos que se parecen mucho al de la anterior entrega.

Uniones:

Una unión es lo mismo que una estructura, pero con una gran diferencia. En las estructuras los campos eran independientes, cada uno tenía reservado su espacio de memoria para el sólito y el tamaño de un registro era la suma de los tamaños de sus campos. En las uniones esto no ocurre, el tamaño de una unión es el tamaño del mayor campo, y todos los campos comparten memoria. Veamos un ejemplo de su definición, declaración y uso:

union nombre_de_la_union{

campos

};

typedef union tipopersona{

char nombre[20];

char inicial;

}persona

int main(void)

{

persona sujeto1;

printf(“Introduce tu nombre: “);

gets(sujeto1.nombre);

printf(“Nombre: %sn”, sujeto1.nombre);

printf(“Inicial: %cn”, sujeto1.inicial);

system(“pause”);

}



nombre ocupa 20 bytes (1 byte por carácter) e inicial 1 byte, por lo que una variable de tipo persona ocupará 20 bytes. Al introducir el nombre en el campo nombre de sujeto1 y preguntar por el contenido del campo inicial se obtiene el primer byte de sujeto1.

Enumeraciones:

Una enumeración es un método para definir constantes sin tener que emplear #define. Es muy útil cuando tenemos que definir una larga lista (o enumeración) de constantes. Veamos un ejemplo:

#include <stdio.h>

enum { primero=1, segundo, tercero, cuarto, quinto } posicion;

int main()

{

posicion=segundo;

printf(«posicion = %in», posicion);

}

Si no le damos ningún valor a las constantes cada una tomará por defecto el valor de la anterior más uno, y la primera valdrá 1. Podemos hacer también lo siguiente:

enum { primero=1, segundo, quinto=5, sexto, septimo };



Segundo vale 2, sexto 6 y séptimo 7, siguiendo la regla que he explicado en el párrafo anterior.

Bueno, esto es todo por esta entrega, no os preocupéis que entre esta y la siguiente no habrá tanto espacio de tiempo.




    el 07.12.08

 

Especiales