struct

Sintaxis

struct [Nombre_estructura]{
   ... /* Campos. Definidos de la misma forma que las variables */
} [Definición_de_variables];

Descripción

Las estructuras (struct) en C son una colección de variables que forman una unidad. Cada una de las variables, denominadas campos, contenidas en la estructura puede ser de distinto tipo y debe tener un identificador distinto.

El nombre del tipo de estructura y la definición de variables son opcionales, pero al menos debe existir una de ellas. Para definir variables de este tipo, a posteriori, se emplea como nombre de tipo "struct Nombre_estructura". La parte de "definición de variables" del formato nos permite definir variables de este tipo de forma inmediata e incluso sin necesidad de que la estructura tenga un nombre concreto.

Las variables de un mismo tipo struct se pueden asignar entre sí, produciéndose una asignación de todos los elementos que la componen. Si se tiene un vector (no un puntero) como campo de un struct se asignará completamente.

Para acceder a los campos de un struct se utiliza el operador . y el operador ->.

Ejemplo

Definición de un struct con dos campos: un entero largo, dni, y una ristra, nombre, de hasta 29 caracteres.

struct InfoPersonal{
   long dni;
   char nombre[30];
};
/* Se pueden definir variables entre el cierra llave y el punto y coma */

El nombre "struct InfoPersonal" es el tipo de la estructura, permitiendo que se pueda utilizar en definiciones posteriores de variables de este tipo.

El procedimiento inicializaVectorStruct inicializa los elementos de un vector de tipo "struct InfoPersonal" al valor de una variable pasada como tercer parámetro de tipo "struct InfoPersonal".

void inicializaVectorStruct(struct InfoPersonal *p, int n, struct InfoPersonal dato){
    int i;
    for (i=0;i<n;i++)
       p[i]=dato;       /* Se inicializan los elementos del vector a "dato" */
}