Está en la página 1de 27

DECLARACIN DE UNA ESTRUCTURA

ESTRUCTURAS
Es una coleccin de uno o ms tipos de elementos

denominados miembros, cada uno de los cuales puede ser un tipo de dato diferente. Una estructura puede contener cualquier nmero de miembros, cada uno de los cules tiene un nombre nico. Ej.: supongamos que se desea alamcenar los datos de una coleccin de discos compactos, estos pueden ser: ttulo, artista, nmero de canciones, precio, fecha de compra. La estructura CD contiene 5 miembros.

ESTRUCTURAS
La estructura CD contiene 5 miembros. Su informacin se representa as:
Nombre del Miembro Ttulo Artista Tipo de Dato Array de caracteres [30] Array de caracteres [25]

Nmero de canciones Precio


Fecha de compra

Entero Coma flotante


Array de caracteres [10]

ESTRUCTURAS
La estructura CD contiene 5 miembros. Su informacin se representa as:
Nombre del Miembro Ttulo Artista Nmero de canciones Precio Fecha de compra Yturburo 10 5.50 30-06-2011 Tipo de Dato Los Pollitos

ESTRUCTURAS
Declaracin de una estructura: struct <nombre de la estructura> {
<tipo de dato miembro_1><nombre miembro_1> <tipo de dato miembro_2><nombre miembro_2> <tipo de dato miembro_n><nombre miembro_n>

};

ESTRUCTURAS
Declaracin de la estructura CD: struct CD { char titulo[30]; char artista[25]; int num_canciones; float precio; char fecha_compra[10]; };

ESTRUCTURAS
Definin de variables de estructuras: Las variables de estructuras se pueden definir de dos formas: 1. Listndolas inmediatamente despus de la llave de cierre de la declaracin de la estructura. 2. Listando el tipo de la estructura creado seguido por las variables correspondientes en cualquier lugar del programa antes de utilizarlas. struct colecciones_CD { char titulo[30]; char artista[25]; int num_canciones; float precio; char fecha_compra[10]; } cd1,cd2,cd3; struct colecciones_CD cd1, cd2, cd3

ESTRUCTURAS
Definin de variables de estructuras: struct info_libros { char titulo[60]; char autor[30]; char editorial[30]; int anio; } libro1, libro2, libro3; struct info_libros libro1, libro2, libro3;

ESTRUCTURAS
Inicializacin de Estructuras: struct colecciones_CD { char titulo[30]; char artista[25]; int num_canciones; float precio; char fecha_compra[10]; } cd1= { Llegaste tu, Reik, 25, 5.50, 08/06/00 };

ESTRUCTURAS
Tamao de una Estructura: struct persona { char nombre[30]; int edad; float altura; float peso; }; void main () { struct persona mar; printf(sizeof(persona): %d\n ,sizeof(mar)); }

ESTRUCTURAS
Acceso a estructuras: Se puede acceder a los miembros de una estructura de una de las dos formas: 1. Utilizando el operador punto (.) 2. Utilizando el operador puntero (->) Sintaxis:
nombre_variable_estructura.nombre_miembro= datos;

Ejemplos: strcpy(cd1.titulo,Granada); cd1.precio= 3.50; cd1.num_canciones = 7;

ESTRUCTURAS
Acceso a estructuras: Se puede acceder a los miembros de una estructura de una de las dos formas: 1. Utilizando el operador punto (.) 2. Utilizando el operador puntero (->) Sintaxis:
nombre_variable_estructura.nombre_miembro= datos;

Ejemplos: strcpy(cd1.titulo,Granada); cd1.precio= 3.50; cd1.num_canciones = 7;

ESTRUCTURAS
Acceso a estructuras con el operador punto: Los datos que se almacenan en un miembro dado deben ser del mismo tipo que el tipo declarado para ese miembro. Ej.: struct corredor cr; printf(Ingrese Nombre:); gets(cr.nombre); printf(Ingrese Edad:); scanf(%d,&cr.edad); printf(Ingrese Sexo:); scanf(%c,&cr.sexo); printf(Club:); gets(cr.club); if(cr.edad <=18) strcpy(cr.categoria,Juvenil); else if (cr.edad<=40) strcpy(cr.categora,Senior); else strcpy(cr.categora,Veterano);

ESTRUCTURAS
Acceso a estructuras con el operador puntero: Para utilizar este operador se debe definir primero una variable puntero para apuntar a la estructura. A continuacin utilizar el operador puntero para apuntar a un miembro dado. Formato:
<puntero_estructura> -> <nombre miembro>= datos;

Antes de acceder a los miembros de una estructura con ->, es preciso crear espacio de almacenamiento en memoria, por ejemplo con malloc( )

ESTRUCTURAS
Acceso a estructuras con el operador puntero: Ejemplo:
struct estudiante { char nombre[41]; int num_estudiante; int anio_de_matricula; float nota; }; se puede definir ptr_est como un puntero a la estructura.

ESTRUCTURAS
Acceso a estructuras con el operador puntero: struct estudiante *ptr_est; struct estudiante mejor; A los miembros de la estructura estudiante se pueden asignar datos como sigue(con malloc o con la direccin de una variables estructura.): ptr_est = &mejor; /*ptr_est tiene la direccin (apunta a) mejor*/

strcpy (ptr_est -> nombre,"Pepe Alomdra"); ptr_est -> num_estudiante = 340; ptr_est -> nota = 8.5;

ESTRUCTURAS
Lectura de Informacin de una estructura. Se puede introducir informacin desde el teclado o desde un archivo, o asignar valores calculados. Ej.: se lee parte real y parte imaginario y se calcula el modulo struct complejo { float pr; float pi; float modulo; }; struct complejo z; printf("\n Parte real:"); scanf("%f",&z.pr); printf("\n Parte imaginaria:"); scanf("%f",&z.pi); /*CALCULO DEL MODULO*/ z.modulo = sqrt(z.pr*z.pr + z.pi*z.pi);

ESTRUCTURAS
Sinnimo de un tipo de datos: typedef Permite crear un sinnimo de un tipo de datos definido por el usuario o de un tipo ya existente. Sintaxis: Typedef tipo_dato_definido nevo_npmbre; Ej.:uso de typedefpara declarar un nuevo nombre, longitud, de tipo de ato double.

typedef double longitud;

ESTRUCTURAS
longitud se puede utilizar como un tipo de dato sinnimo de double. Ej.: la funcin distancia() es de tipo longitud.
longitud distancia (const punto& p, const punto& p2) { longitud Longitud = sqrt (r-cua); return longitud; }

ESTRUCTURAS
Ej. 2: declaracin del tipo de dato completo y asociacin a complex.
struct complejo { float x,y }; typedef struct complejo complex; /*DEFINICION DE UN ARRAY DE COMPLEJOS*/ complex v[12];

ESTRUCTURAS
Ej. 3: declaracin del tipo de dato racional y asociacin a racional.
typedef struct racional { int numerador; int denominador; }racional;
struct numero { complex a; racional r; }; La ventaja es que permite dar nombres de tipos de datos ms acordes con aquello que representan en una determinada aplicacin.

ESTRUCTURAS
ESTRUCTURAS ANIDADAS
struct empleado { char nombre_emp[30]; char direccion[25]; char ciudad[20]; char provincia[20]; long int cod_postal ; double salario; }; struct clientes { char nombre_cliente[30]; char direccion[25]; char ciudad[20]; char provincia[20]; long int cod_postal; double saldo; };

ESTRUCTURAS
ESTRUCTURAS ANIDADAS
struct info_direccion { char direccion[25]; char ciudad[20]; char provincia[20]; long int cod_postal; };

struct empleado { char nombre_emp[30]; struct info_direccion direccion_emp; double salario; }; struct cliente { char nombre_cliente[30]; struct info_direccion direccion_clien; double saldo; };

ESTRUCTURAS
ESTRUCTURAS COMO PARMETROS Si se desea pasar una estructura por referencia; necesita situar un operador de referencia & antes de la variable estructura en la llamada a la funcin. El acceso a los miembros dato de la estructura se realiza a partir de un puntero requiere el uso del selector ->.

ESTRUCTURAS
ESTRUCTURAS COMO PARMETROS Prototipo de la funcin:
void entrada_persona (struct info_persona *pp); void ver_info (struct info_persona p); Llamada a la funcin: entrada_persona(&reg_dat); ver_info(reg_dat);

ESTRUCTURAS
UNIONES
Una estructura permite almacenar variables relacionadas juntas y almacenadas en posiciones contiguas de memoria. Las uniones, almacenan tambin miembros mltiples en un paquete, pero en lugar de situar sus miembros unos detrs de otros, todos los miembros se sobreponen en la misma posicin. El tamao que ocupa la unin se determina as: se analiza el tamao de cada variable de la unin, el mayor tamao ser el tamao de la unin. Sintaxis: union nombre { tipo_1 miembro_1; tipo_2 miembro_2; };

ESTRUCTURAS
UNIONES
Ejemplo: union PruebaUnion { float item1; int item2; } union comparte { char letra; int elemento; float precio; double z; }; Una razn para utilizar una unin es ahorrar memoria.

También podría gustarte