Una estructura no es más que un conjunto de variables de distinto tipo agrupadas con un mismo nombre para que su manejo sea simple.
En la imagen podemos ver que la estructura de datos contine 4 tipos de datos diferentes.
char int float tipo_nodo
El tipo de dato llamado tipo_nodo nos indica que las estructuras de datos pueden contener tantos datos básicos como datos creados por nosotros mismos.
Las estructuras se pueden declarar de la siguente forma:
struct nombre_estructura {
campo/miembro estructura;
};
Donde:
--- struct es una palabra reservada de C que indica la composición de una estructura.
--- nombre_estructura asigna el nombre a dicha estructura.
--- campo/miembro estructura; son tipos de datos que contiene, se les puede llamar campo ó miembro.
Si desearamos hacer una agenda telefónica, la forma para declararla podría ser:
struct agenda_entrada { char nombre[50]; char apellido[60]; char telefono[10]; char edad; };
Otra forma sería:
struct agenda_entrada { char nombre[50]; char apellido[60]; char telefono[10]; char edad; }familiar, laboral;
e incluso podríamos declararla como:
struct { char nombre[50]; char apellido[60]; char telefono[10]; char edad; }familiar, laboral;
En el primer ejemplo estamos declarando la estructura, luego, cuando la necesitemos, le asingaremos las variables. Para el segundo y tercer ejemplo hemos declarado las variables junto a la estructura, esto nos trae el inconveniente de no poder declarar más variables a lo largo del programa pues las estructuras se tienen que declarar antes de la función main.
Tomando el primer ejemplo, agenda_entrada es un nuevo tipo de dato que hemos creado. Para poner a trabajar nuestra creación solo tenemos que asignarle una variable:
struct agenda_entrada agenda;como vemos, nuestra variable "agenda" es de tipo agenda_entrada. Si por ejemplo queremos ir al contenido del campo "nombre" solo tenemos que escribir:
agenda.nombre;Aplicando un poco de lógica, nos daremos cuenta que nuestra agenda solo almacenaría una entrada, cosa poco práctica. Para solucionar esto solo tenemos que declarar un array ó arreglo de estructura:
struct estructura_agenda agenda[30]como vemos, hemos declarado que "agenda" sea un vector de 30 elementos. La manera de acceder a cada elemento sería:
amigo[número_de_elemento].campo_estructuraDonde:
--- amigo[número_de_elemento] hace referencia a la posicion del elemento dentro del vector. amigo[0] hace referencia al primer elemento.
--- .campo_estructura apunta hacia un miembro del elemento referenciado. amigo[0].edad nos mostraría la edad contenida en el primer elemento.