2010
Pagina : 1
ESTRUCTURA
Una estructura es una coleccin de variables a las cuales se hace referencia bajo un nico
nombre. Las variables que forman la estructura se denominan elementos o miembros de la
estructura.
Una estructura forma una plantilla y podemos crear varias variables de estructuras
Formato general
struct nombre tipo estructura
{
tipo nombre_elemento1;
tipo nombre_elemento2;
} variables_estructuras;
Donde nombre tipo estructura y variables_estructuras pueden omitirse pero no
simultneamente.
Ej.
struct alumno
{
int legajo;
char nombre[30];
char titulo[30];
};
Lo anterior es una sentencia de identificacin de tipo donde se ha definido la forma y no se
ha declarado ninguna variable.
Para declarar una variable estructura con la forma de alumno se coloca
struct alumno dato;
La variable es dato y ocupa en memoria :
4byte
para legajo ( en mbito windows)
30byte
para nombre
30byte
para titulo
62 byte
en total
Se puede declarar todo junto
struct alumno
{
int legajo;
char nombre[30];
char titulo[30];
} dato, otro, nuevo;
Para acceder a un elemento o miembro se utiliza el operador punto (.)
Nombre variable struct . nombre del campo
Pagina : 2
Ej
dato.legajo = 1456;
o asignar una cadena
dato.titulo =bachiller;
Si se quiere acceder a los caracteres individuales del nombre se puede poner
for(int t=0; dato.nombre[t]; t++)
printf( %c , dato.nombre[t]);
Inicializacin
struct fecha d = {13, 8, 2001};
Vector de estructuras
Si se desea trabajar con un vector de estructuras se debe definir primero la estructura y luego
el vector.
Ej con la estructura anterior es
struct alumno info[50];
para acceder a uno de sus elementos se coloca primero el vector con el indice como cualquier
vector y luego el elemnto correspondiente
cin >> info[i].legajo;
Si quiero comparar la inicial del nombre por ejemplo con una letra sera
if ( info[i].nombre[0] == A)
Punteros de estructuras
Se declara
struct dir{
char direccion [30];
char localidad [20];
} dato;
struct dir *puntero;
declara un puntero de estructura y se inicializa con
(*puntero). direccion
o puntero->direccion
Pagina : 3
struct nn{
int legajo;
struct d al ;
int nota ;
};
struct nn alumnos;
y se referencia alumnos.al.apellido;
Ejemplo 2:
struct fecha
{ int dia;
int mes;
};
entonces
struct {
o todo junto
int cuenta;
char nombre[30];
struct fecha ultima;
}cliente, *pc;
pc = &cliente;
} cliente , *pc= & cliente;
Pagina : 4
Declaracin
func1(char *);
func1(int*),
func1(char*);
EJEMPLOS
//hallar la suma de dos complejos
struct c{
float re,im;
};
void main()
{
struct c x,y,s;
cout << ingrese dos reales";
cin >> x.re >> x.im;
cin >>y.re >> y.im;
s.re = x.re+ y.re;
s.im = x.im+ y.im;
cout << "la suma real es " << s.re;
cout << "la suma imaginaria es " << s.im;
}
s.im;
}
void suma ( struct c *a, struct c *b, struct c *z)
{
z->re = a->re + b->re;
z->im = a->im + b->im;
}
UNION
Es una tipo de dato que puede contener en distintos momentos , objetos (o campos) de
distintos tipos y tamaos.
Este tipo de dato comparte muchas caractersticas sintcticas y funcionales con el tipo struct.
La diferencia es que solo uno de sus miembros puede ser almacenado a la vez.
El tamao de una unin es el tamao del elemento ms largo.
union tipo {
int x;
float y;
char z;
char cad[10];
};
union tipo uni; // uni es la variable del tipo unin
En este caso el tamao de uni es 10 byte (es el campo ms grande)
EJEMPLO
Dado el siguiente tipo y declaracin de variable:
union vigila {
char guardia[25];
char empleado [35];
} ;
struct pers {
int edad;
vigila guaremp;
};
pers empresa;
Qu cantidad de memoria (bytes ) es reservada para la variable: empresa ?
Es reservada 39 bytes, formada por guaremp (35 byte) y edad (4byte, en entorno
windows).
ENUMERACION
Es una lista de descripciones. Se usa para proveer identificadores mnemnicos a un conjunto
de valores enteros. Es un conjunto de constantes enteras con nombre, que identifican los
valores posibles que una variable de ese tipo puede tomar.
enum . { enum1, enum2, enum3,..enumn};
Ej.
Preparado por : Ing. Isabel B. Marko
Pagina : 6
TYPEDEF
Es una redefinicin de un tipo de dato
typedef Nombre TipoDato NuevoNombre TipoDato
Ej. 1
Pagina : 7