A continuación, del Curso de Programación en C de Programar es fácil (o no) veremos un breve resumen de algunas estructuras de datos:

  • Estructuras
  • Uniones
  • Enumeraciones

Struct

Una estructura es una agrupación, bajo un mismo nombre de variable, distintos datos que pueden ser de diferente tipo. Las estructuras vienen a salvar la limitación de los arrays, que solo almacenan un único tipo de dato.

Una estructura también es llamada registro y cabe su analogía con los registros de una tabla, donde un registro tiene varios datos (campos) y estos pueden diferir en su tipo:

Ejemplo:

struct usuarios_t {
   int   dni;
   char     nombres[50];
   char     apellido[30];
   time_t   nacimiento;
};

//un registro usuarios:
struct usuarios_t usuario;
usuario.dni=27651109
strcpy(usuario.nombres,"Jose Maria");
...

//un array de registros:
struct usuarios_t usuarios[10];
usuario[0].dni=27651109
strcpy(usuario[0].nombres,"Jose Maria");
usuario[1].dni=26852789
strcpy(usuario[1].nombres,"Juan Carlos");
...

No es mi intención sumar complejidad a este resumen, solo quiero agregar que se pueden declarar punteros a estructuras, que los elementos de una estructura pueden ser punteros, que se pueden anidar estructuras, pasar estructuras (como punteros a estructuras) como parámetro de funciones, etc.

Union

Una union se declara de la misma forma que una estructura, reemplazando struct por union. La diferencia está en que todos los miembros de la union comparten el mismo espacio en memoria, por lo que solo se puede tener almacenado un miembro de ellos en cada momento. El tamaño de la union estará dado por el miembro más largo de la misma.

Ejemplo:

struct usuarios_t {
   int   dni;
   char     nombres[50];
   char     apellido[30];
   time_t   nacimiento;
};
union usuario_t usuario;        /* Declaración de la variable */

Enum

Una enumeración es un conjunto de constantes enteras. A la enumeración se le puede asignar un nombre, que se comportará como un nuevo tipo de dato que solo podrá contener los valores especificados en la enumeración.

Ejemplo:

enum dias_semana {LUNES=1, MARTES=2, MIERCOLES=3, JUEVES=4, VIERNES=5, SÁBADO=6, DOMINGO=7 };

dias_semana     dia;
dia         =   LUNES;
dia         =   1;    /* Ambas asignaciones son equivalentes */

Vía: Estructuras en C, Uniones en C, Enumeraciones en C