Estructuras y Uniones en C

Sección de Acceso Rápido de Subtemas de Este Capítulo:

Estructuras en C. | Declaración de Estructuras | Acceso a Miembros de Estructuras | Estructuras Anidadas| Arreglos de Estructuras | Uniones en C| Declaración de Uniones |

Estructuras en C

1.-Una Estructura es una colección de variables simples, que pueden contener diferentes tipos de datos. Es un tipo de dato definido por el usuario. Son también conocidas como Registros. Ayudan a organizar y manejar datos complicados en programas debido a que agrupan diferentes tipos de datos a las que se les trata como una sola unidad en lugar de ser vistas como unidades separadas.



Top de la Pagina

1.1-La Declaración de estructuras en programas C es un nuevo tipo de datos denominado tipo Estructura y declarar una variable de este tipo.

En la definición del tipo de estructura, se especifican los elementos que la componen así como sus tipos. Cada elemento es llamado miembro (similar a un campo de un registro).

Ejemplo de Estructura

Después de definir un tipo estructura, se puede declarar una o más variables de ese tipo de la siguiente forma: struct tipo_estructura [variables];

ejemplo de estructura

Definición de variables de esta estructura : struct a, b; O también se pueden definir la estructura y sus variables al mismo tiempo:

ejemplo de estructura


Top de la Pagina

1.2-El Acceso a los Miembros de la Estructura es por medio del operador Punto de la siguiente manera:

ejemplo de acceso a miembros

Los miembros de las Estructuras también se pueden Inicializar individualmente o bien, todos simultáneamente. La inicialización individual es por medio del operador punto, para la estructura completa es con caracteres llaves y los valores de los miembros separados por coma. Iniciando solo por miembros: a.codigo=1234;

Iniciando Estructura completa: Articulo a={1234, "escoba", 23, 1.50};

programa ejemplo
programa ejemplo
programa ejemplo

Top de la Pagina

1.3-Arreglos de Estructuras pueden ser construidas, es decir, conceptuar a los elementos de un arreglo como estructuras, esto se puede hacer de la siguiente manera:

ejemplo de Arreglo de Estructuras

Para tener acceso a una determinada estructura , se indexa el nombre de la estructura de la siguiente manera: alumnos[i].nombre; aquí sabemos el nombre del alumno que se encuentra en la posición i del arreglo, y de esta manera para todos los datos. Si se desea inicializar los valores, se podría hacer de la siguiente manera:

Struct datos.alumno[5]={96147523, "Luis", 22, "m", pino 45};

 

 

 



Top de la Pagina

Estructuras Anidadas. El siguiente ejemplo muestra una estructura anidada. Las estructuras que hemos visto han sido muy sencillas aunque útiles. Es posible definir estructuras conteniendo docenas y aún cientos ó miles de elementos pero sería ventajoso para el programador no definir todos los elementos en una pasada sino utilizar una definición de estructura jerárquica.

ejemplo de Estructuras Anidadas
Ejemplo de Estructuras anidadas

La primera estructura contiene tres elementos pero no le sigue ninguna variable definida, sólo una estructura, pero como incluimos un nombre al principio de la estructura, la estructura es llamada persona. La palabra persona puede utilizarse para referirse a la estructura pero no a cualquier variable de éste tipo de estructura, se trata por lo tanto de un nuevo tipo que hemos definido y lo podemos utilizar de la misma manera en que usamos un int, char o cualquier otro tipo que existe en C. La única restricción es que éste nuevo tipo debe estar siempre asociado con la palabra clave struct.

La siguiente definición de estructura contiene tres campos siendo el segundo la estructura previamente definida la cual llamamos persona. La variable de tipo persona se llama descripcion, así la nueva estructura contiene dos variables simples, calificacion y una cadena llamada comida, y la estructura llamada descripcion. Como descripcion contiene tres variables, la nueva estructura tiene entonces cinco variables, a ésta estructura le hemos dado el nombre de datos, lo cual es otro tipo definido. Finalmente, dentro de la función main ( ) definimos un array de 53 variables cada una con la estructura definida por el tipo datos, y cada una con el nombre estudiante, en total hemos definido 53 veces 5 variables, cada una de las cuales es capaz de almacenar datos. Como tenemos la definición de un nuevo tipo podemos utilizarla para a su vez definir dos variables. Las variables maestro y sub están definidas en la línea 20 como variables de tipo datos por lo que cada una de éstas dos variables contienen 5 campos en los cuales podemos almacenar datos.

En las líneas 22 a 26 del programa asignamos valores a cada uno de los campos de maestro. El primero es el campo calificacion y es manejado como las otras estructuras que hemos estudiado porque no forma parte de la estructura anidada. Enseguida deseamos asignar un valor a edad el cual es parte de la estructura anidada. Para acceder a éste campo empezamos con el nombre de la variable maestro al cual le concatenamos el nombre del grupo descripcion, y entonces debemos definir en cuál campo de la estructura anidada estamos interesados por lo que concatenamos el nombre de la variable edad. El estado de los maestros se manejan de la misma manera que su edad pero los últimos dos campos son cadenas asignadas utilizando la función strcpy ( ). Observe que los nombres de las variables en la función strcpy ( ) se consideran como una unidad aunque estén compuestas de varias partes.

Compile y ejecute el programa, probablemente obtenga un aviso sea de error ó advertencia respecto a un desbordamiento de memoria.

Lo que ésto significa es que el programa requiere más memoria que la asignada por el compilador por lo que es necesario incrementar el tamaño de stacks, el método para hacer ésto varía de un compilador a otro.



Top de la Pagina

Uniones en C

2.-Uniones. Las uniones son similares a las estructuras, con la diferencia de que en las uniones se almacenan en los campos solapándose unos con otros en la misma disposición; al contrario que en las estructuras, al contrario que en las estructuras, donde los campos se almacenan unos a continuación de otros. En esencia, las uniones sirven para ahorrar espacio en memoria. Para Almacenar los miembros de una unión, se requiere una zona de memoria igual a la que ocupa el miembro mas largo de la unión. Todos los miembros son almacenados en el mismo espacio de memoria y comienzan en la misma dirección. El valor almacenado es sobreeescrito cada vez que se asigna un valor al mismo miembro o a un miembro diferente, aquí radica la diferencia con las estructuras.



Top de la Pagina

2.1- La Declaración de Unioneses similar a la de las estructuras:

Ejemplo de Union

Después de definir un tipo union, se puede declarar una o mas variables de ese tipo de la siguiente forma: union tipo_union [variables];

Una declaración union define un tipo. La llave derecha que temina la lista de miembros puede ser seguida por una lista de variables de la siguiente manera:

Ejemplo de Union

Dicho de una forma simple, una unión le permite manejar los mismos datos con diferentes tipos, ó utilizar el mismo dato con diferente nombre, a continuación le presento un ejemplo:

Ejemplo de unión

En éste ejemplo tenemos dos elementos en la unión, la primera parte es el entero llamado valor el cual es almacenado en algún lugar de la memoria de la computadora como una variable de dos bytes. El segundo elemento está compuesto de dos variables de tipo char llamadas primero y segundo. Estas dos variables son almacenadas en la misma ubicación de almacenamiento que valor porque ésto es precisamente lo que una unión hace, le permite almacenar diferentes tipos de datos en la misma ubicación física. En éste caso Usted puede poner un valor de tipo entero en valor y después recobrarlo en dos partes utilizando primero y segundo, ésta técnica es utilizada a menudo para empaquetar bytes cuando, por ejemplo, combine bytes para utilizarlos en los registros del microprocesador. La unión no es utilizada frecuentemente y casi nunca por programadores principiantes, en este momento no necesita profundizar en el empleo de la unión así que no dedique mucho tiempo a su estudio, sin embargo no tome a la ligera el concepto de la unión, podría utilizarlo a menudo.



Top de la Pagina


Examen!

Si has Estudiado Bien el Capitulo Click Aqui para hacer el Examen 4


Glosario del Tutorial

¿No Entiendes Bien Algún Concepto?... Consultalo!


Busqueda en el Tutorial

¿Deseas Encontrar Algo Especifico?...Encuentralo!

 

Ejemplo Práctico de este Capitulo !



Este tutorial desarrolla al 100% sus Aplicaciones con un Navegador en 800x600

OPCIÓN ALTERNA:
Introducción@Elementos de C@Apuntadores y Arreglos@Estructuras y Uniones@Bibliografía

Archivos y Gráficos@POO1@POO2@POO3@Creditos@Presentación Principal@Menú Principal


Todos los Derechos Reservados por El Instituto Tecnológico de Querétaro Mexico. "La tierra será como sean los Hombres"

Ultima Actualización: México Noviembre de 1999