Estructuras en C
Las estructuras son colecciones de variables relacionadas bajo un nombre.Pueden contener variables de muchos tipos diferentes de datos
a diferencia de los arreglos que contienen únicamente elementos de un mismo
tipo de datos.
Definición de estructuras
Las estructuras son tipos de datos derivados, están construidas utilizandoobjetos de otros tipos. Considere la siguiente definición de estructura:
struct ejemplo {
char c;
int i;};
identificador ejemplo es el nombre de la estructura. Las variables declaradas
dentro de las llaves de la definición de estructura son los miembros de la estructura. Los miembros de la misma estructura deben tener nombres únicos
mientras que dos estructuras diferentes pueden tener miembros con el mismo
nombre. Cada definición de estructura debe terminar con un punto y coma.
La definición de struct ejemplo contiene un miembro de tipo char y otro
de tipo int. Los miembros de una estructura pueden ser variables de los tipos
de datos básicos (int, char, float,etc) o agregados como ser arreglos y otras
estructuras. Una estructura no puede contener una instancia de si misma.
Declaramos variables del tipo estructura del siguiente modo:
struct ejemplo e1, a[10];o alternativamente sin usar la palabra struct:
ejemplo e1, a[10];Las declaraciones anteriores declaran variables e1 de tipo ejemplo y a de tipo
arreglo de ejemplo de dimensión 10.
Se pueden declarar variables de tipo estructura ejemplo colocando sus nombres a continuación de la llave de cierre de la definición de estructura y el punto
y coma, en el caso anterior:
struct ejemplo {Una operación valida entre estructuras es asignar variables de estructura a
char c;int i;} e1, a[10];
variables de estructura del mismo tipo. Las estructuras no pueden compararse entre si.
Estructuras Anidadas
Ejemplo escrito:
- /*
- estructura2.c
- Nombre Miembro Tipo
- Titulo char[30]
- Artista char[25]
- Precio float
- Total Canciones int
- */
- #include <stdio.h>
- #include <string.h>
- /* creamos nuestra estructura con datos similares */
- struct infopersona
- {
- char direccion[25];
- char ciudad[20];
- char provincia[20];
- long int codigo_postal;
- }; /* las estructuras necesitan punto y coma (;) al final */
- /* creamos nuestra estructura empleado */
- struct empleado
- {
- char nombre_empleado[25];
- /* agregamos la estructura infopersona
- * con nombre direcc_empleado
- */
- struct infopersona direcc_empleado;
- double salario;
- }; /* las estructuras necesitan punto y coma (;) al final */
- /* creamos nuestra estructura cliente */
- struct cliente
- {
- char nombre_cliente[25];
- /* agregamos la estructura infopersona
- con nombre direcc_cliente
- */
- struct infopersona direcc_cliente;
- double saldo;
- }; /* las estructuras necesitan punto y coma (;) al final */
- int main(void)
- {
- /* creamos un nuevo cliente */
- struct cliente MiCliente;
- /*inicializamos un par de datos de Micliente */
- strcpy(MiCliente.nombre_cliente,"Alexis");
- strcpy(MiCliente.direcc_cliente.direccion, "Altos del Cielo");
- /* notese que se agrega direcc_cliente haciendo referencia
- a la estructura infopersona por el dato direccion
- */
- /* imprimimos los datos */
- printf("\n Cliente: ");
- printf("\n Nombre: %s", MiCliente.nombre_cliente);
- /* notese la forma de hacer referencia al dato */
- printf("\n Direccion: %s", MiCliente.direcc_cliente.direccion);
- /* creamos un nuevo empleado */
- struct empleado MiEmpleado;
- /*inicializamos un par de datos de MiEmplado */
- strcpy(MiEmpleado.nombre_empleado,"Alexis");
- strcpy(MiEmpleado.direcc_empleado.ciudad,"Nueva York");
- /* para hacer referencia a ciudad de la estructura infopersona
- * utilizamos direcc_empleado que es una estructura anidada
- */
- /* imprimimos los datos */
- printf("\n");
- printf("\n Empleado: ");
- printf("\n Nombre: %s", MiEmpleado.nombre_empleado);
- /* notese la forma de hacer referencia al dato */
- printf("\n Ciudad: %s", MiEmpleado.direcc_empleado.ciudad);
- return 0;
- }
Arreglos de estructuras
struct trabajador
{
char nombre[20];
char apellidos[40];
int edad;
};
struct trabajador fijo[20];
Así podremos almacenar los datos de 20 trabajadores. Ejemplos sobre como acceder a los campos y sus elementos: para ver el nombre del cuarto trabajador, fijo[3].nombre;. Para ver la tercera letra del nombre del cuarto trabajador, fijo[3].nombre[2];. Para inicializar la variable en el momento de declararla lo haremos de esta manera:
struct trabajador fijo[20]={{"José","Herrero Martínez",29},{"Luis","García Sánchez",46}};
Typedef
Es posible agrupar un conjunto de elementos de tipo estructura en un array. Esto se conoce como array de estructuras: El lenguaje 'C' dispone de una declaración llamada typedef que permite la creación de nuevos tipos de datos. Ejemplos:
typedef int entero; /* acabamos de crear un tipo de dato llamado entero */
entero a, b=3; /* declaramos dos variables de este tipo */
No hay comentarios.:
Publicar un comentario