struct-C

Es la capacidad de generar un nuevo tipo de dato a partir de otros anteriores.

									    struct NomTipoDato{
									        tipo1 miembro1;
									        tipo2 miembro2;
									        ....
									    };
									    

A partir de ahora podremos crear datos de tipo NomTipoDato , el cual tiene como información las variables miembro1 , miembro2, etc ... que son de tipo tipo1 tipo2 ... la manera de declarar una variable de este tipo es mediante la sentencia

 struct NomTipoDato a, b; 
Esta sentencia genera dos elementos , a y b que son de tipo NomTipoDato.
La manera de acceder a sus miembros bien para leer o para almacenar información es usar el caracter .
 a.miembro1= '3'; 
suponiendo que miembro1 sea una variable tipo char (también podría ser un entero o long etc...).

otra manera de declarar otra variables es:

									    struct NomTipoDato{
									        tipo1 miembro1;
									        tipo2 miembro2;
									        ....
									    } a , b;
									    
Este método hace lo mismo que el anterior en un único paso
En este caso se pueden crear las estructuras de de manera anónima o sin etiqueta pero, pero de hacerse así solo se pueden declarar las variables de este modo ya que la etiqueta es necesaria como se vio en el apartado anterior para su Declaración , este método que parece poco práctico puede serlo si se tiene en cuenta que C aconseja realizar todas las declaraciones al principio del programa (y de no hacerse así en versiones antiguas puede dar error, y es recomendable en la medida de lo posible para mantener retrocompatibilidad ).

Se pueden anidar una estructura puede a la ver ser tipo de dato de otra estructura.

Punteros a miembros (->) Si a es una estructura se accede a sus miembros mediante el punto pero pero si lo que tengo es un puntero a esta

 punt_a = &a; 
entonces no puedo hacerlo porque el puntero no tiene miembro es la estructura , de esta manera hay dos formas:
									        (* a ).miembro1;  // la necesidad de utilizar parentesis aqui es por la mayor prioridad del punto.
									        a->miembro1;
									    

Se puede hacer Asignación de una estructura a otra con el signo = siempre que sean del mismo tipo, pero con el cuidado no haya miembros que sean punteros estáticos (giño a los vectores y arrais)