struct nombre{
declaración de dato ;
...
};
Una estructura deberá ser declarada fuera de cualquier proceso o función
Se debe poner la palabra reservada struct precediendo a su nombre, tras la cabecera se declararán todos los datos pertenecientes a la estructura, que conformarán los campos de la misma. Y, por último, para finalizar la declaración debe aparecer la palabra reservada "};".
A continuación se muestra un ejemplo de estructura:
struct enemigo{ int energia; unsigned short x_inicial,y_inicial; unsigned short x_final,y_final; char nombre[15]; }; struct enemigo enemigos[10];
Al igual que con las tablas, el número de registros se expresa como el número de registro máximo de la estructura, es decir, todas las estructuras tienen desde el registro 0 hasta el indicado entre los corchetes menos 1 (por ejemplo, la declaración anterior define una estructura de 10 registros 0 hasta 9).
Se permite acceder al resgistro 0 de la estructura simplemente con el nombre de la estructura, es decir, que para el compilador enemigo[0].y_final será lo mismo que (*enemigo).y_final.
Nota: Cada campo de la estructura puede ser una variable o tabla (de cualquier tipo, ver los tipos de datos) u otra estructura completa, con sus diferentes registros y campos.
Inicialización de la estructura.
Si se quiere inicializar la estructura (fijar los valores iniciales de sus campos en los diferentes registros), se deberá poner el símbolo = (asignación) tras la palabra reservada }; seguida de una lista de valores.
Si no se inicializa la estructura, todos los campos serán puestos a 0 por defecto. Por ejemplo, si se hace la siguiente declaración:
struct a{
int b; int c[2]; }; struct a numero[3] = {1,2,3,4,5,6,7,8,9};
Primero se debe tener en cuenta que la numero numero[] tiene 3 registros (desde a[0] hasta a[2]) y en cada registro 3 campos (b, c[0] y c[1]), luego la anterior declaración inicializará la estructura de la siguiente forma:
a[0].b=1;
a[0].c[0]=2;
a[0].c[1]=3;
a[1].b=4;
a[1].c[0]=5;
...
Ver: Sintaxis - Declaración de un dato