Вы находитесь на странице: 1из 4

Stgo.

20/10/2014
Profesor: Igor Caracci Marabol

Estructuras en Lenguaje C
(STRUCT)
Una estructura es un conjunto de datos, posiblemente de tipos diferentes,
agrupadas bajo un mismo nombre, para hacer ms eficiente su manejo.

Las estructuras ayudan a organizar datos complicados, particularmente en


programas grandes, ya que permiten tratar como una unidad a un conjunto de
variables relacionadas, en lugar de tratarlas como entidades independientes.

Un buen criterio de uso de estructuras establece que la definicin de una


estructura debe ir acompaada por la definicin de un conjunto de funciones que
se encargan de realizar la manipulacin directa de la nueva entidad creada.

Definicin de estructuras en Lenguaje C


Una estructura se define en lenguaje C a travs de la siguiente sintaxis:

struct Nombre
{
tipo1 Campo1;
tipo2 Campo2;
...
tipoN CampoN;
};

La declaracin en el programa o funcin es:

struct Nombre Var1;

Otra forma de definir es (la utilizaremos en clases)


Typedef struct Nombre
{
tipo1 Campo1;
tipo2 Campo2;
...
tipoN CampoN;
}Nombre ;
Stgo. 20/10/2014
Profesor: Igor Caracci Marabol

La declaracin en el programa o funcin es:

Nombre Var1;

Declara una variable del tipo "struct Nombre", esto es, el compilador
reserva la cantidad de memoria suficiente para mantener la estructura ntegra
(es decir espacio para almacenar Campo1, Campo2, ..., CampoN). Cuando se hace
referencia a la variable Var, se est haciendo referencia a la estructura
ntegra.

Inicializacin de estructuras
Se puede inicializar una estructura externa o esttica aadiendo a su
definicin la lista de inicializadores:

Typedef struct Fecha


{
int Dia;
char Mes[10];
int Anio;
}Fecha;

Int main()
Fecha Hoy = {8,"Mayo",1991},
VarFecha;
...
VarFecha = Hoy;

La asignacin VarFecha = Hoy copia la estructura integra Hoy en


VarFecha. Cuando dentro de los campos de una estructura aparecen punteros y
uno realiza este tipo de asignacin, se est copiando tambin los valores de los
punteros, de tal manera que se puede estar haciendo referencia a un dato
desde dos puntos diferentes lo que puede causar efectos no deseados y un
potencial peligro para la aplicacin.
Stgo. 20/10/2014
Profesor: Igor Caracci Marabol

Referencia de campos de una estructura


Un campo de una estructura se utiliza como una variable ms. Para
referenciar un campo de una estructura se emplea el operador ".".

Ejemplo:

Hoy.Dia = 24;
strcpy(Hoy.Mes, "Agosto");
Hoy.Anio = 1991;

Ejemplo para verificar ao bisiesto:

Bisiesto = Fecha.Anio % 4 == 0 &&


Fecha.Anio % 100 != 0 ||
Fecha.Anio % 400 == 0;

Las estructuras se pueden anidar:

Typedef struct Person


{
char Nombre [30];
char Direccion[40];
int ZipCode;
float Salario;
Fecha Nacimiento;
}Person;

Para referenciar un campo de una estructura interna se utiliza la misma


sintaxis, referenciando campos internos dentro de campos:

Person Juan;
Juan.Nacimiento.Dia = 14;
Stgo. 20/10/2014
Profesor: Igor Caracci Marabol

Arreglos de Estructuras
En el siguiente ejemplo se observa cmo se declara un arreglo de estructuras,

#include <stdio.h>
#include <stdlib.h>
typedef struct Datos
{char nombre[40];
int edad;
float sueldo;
} Datos;

int main()
{
Datos a[3];
int i;
for (i=0;i<3;i++)
{ printf ("\n Nombre");
fflush(stdin);gets(a[i].nombre);
printf ("\n edad "); scanf("%i",&a[i].edad);
printf ("\n Sueldo "); scanf("%f",&a[i].sueldo);
}
for (i=1;i<3;i++)
{ printf ("\n Nombre %s ",a[i].nombre);
printf ("\n edad %i ",a[i].edad);
printf ("\n Sueldo %10.1f ",a[i].sueldo);
}
system("PAUSE");
return 0;

Вам также может понравиться