3
Estructuras como argumentos en funciones y procedimientos Pueden ser pasados miembros de una estructura como argumentos a funciones y procedimientos, para mostrar o modificar su contenido. También la estructura completa puede ser utilizada y modificada en módulos. 1) Miembro individual de una estructura a) Como argumento para “mostrar o utilizar” su valor (no retorno ningna modificación) rutina(estructura.miembro); Así viaja el contenido del elemento de estructura Ej: ing_registro(alumno.registro); y el título void ing_registro(long int registro) Ing_nombre(alumno.nombre); y el título void ing_nombre(char nombre []) b) Como argumento para “modificar” su contenido rutina(&estructura.miembro); Se envía la dirección con & en estos tipos, o sólo el nombre en arreglos (vectores o strings). Ej: cargar_adicionales(&importe_precio); y el título void cargar_precio(float *precio); ingresar_nombre(nombre_apellido); y el título void ingresar_nombre(char nombre[]); c) Asignación en un retorno de función estructura.miembro=función(); Se recibe con el signo de igualación, como siempre, pero sólo los tipos posibles, ya que los strings debe usarse el strcpy reemplazando al igual. strcpy (estructura.miembro_string , función()); REC!!!!!!!!! Ej: cliente.dias=ingresar_dias_ocupados(); y el título int cargar_dias_ocupados (void) strcpy (alumno.nombre , ing_nombre()); y el título char *ing_nombre(void) 2) Estructura completa a) Como argumento de una rutina para “mostrar o utilizar” su valor rutina(estructura); Para operar en otro módulo todos o la mayoría de los miembros de una estructura utilizamos la variable de la estructura entera. Ej: struct tipo_cliente cliente (declaro nombre de la estructura) mostrar_datos_cliente(cliente); y título void mostrar_datos_clientes(struct tipo_cliente cliente);

Resumen de C

Embed Size (px)

DESCRIPTION

Resumen de Programacion en C

Citation preview

Estructuras como argumentos en funciones y procedimientos

Estructuras como argumentos en funciones y procedimientos

Pueden ser pasados miembros de una estructura como argumentos a funciones y procedimientos, para mostrar o modificar su contenido. Tambin la estructura completa puede ser utilizada y modificada en mdulos.

1) Miembro individual de una estructuraa) Como argumento para mostrar o utilizar su valor (no retorno ningna modificacin)rutina(estructura.miembro);

As viaja el contenido del elemento de estructura

Ej: ing_registro(alumno.registro); y el ttulo void ing_registro(long int registro)

Ing_nombre(alumno.nombre); y el ttulo void ing_nombre(char nombre [])

b) Como argumento para modificar su contenido

rutina(&estructura.miembro);

Se enva la direccin con & en estos tipos, o slo el nombre en arreglos (vectores o strings).

Ej: cargar_adicionales(&importe_precio); y el ttulo void cargar_precio(float *precio);ingresar_nombre(nombre_apellido); y el ttulo void ingresar_nombre(char nombre[]);

c) Asignacin en un retorno de funcin

estructura.miembro=funcin();

Se recibe con el signo de igualacin, como siempre, pero slo los tipos posibles, ya que los strings debe usarse el strcpy reemplazando al igual.

strcpy (estructura.miembro_string , funcin()); REC!!!!!!!!!

Ej: cliente.dias=ingresar_dias_ocupados(); y el ttulo int cargar_dias_ocupados (void)

strcpy (alumno.nombre , ing_nombre()); y el ttulo char *ing_nombre(void)

2) Estructura completa

a) Como argumento de una rutina para mostrar o utilizar su valor

rutina(estructura);

Para operar en otro mdulo todos o la mayora de los miembros de una estructura utilizamos la variable de la estructura entera.

Ej: struct tipo_cliente cliente (declaro nombre de la estructura) mostrar_datos_cliente(cliente); y ttulo void mostrar_datos_clientes(struct tipo_cliente cliente);

b) Como argumento para modificar su contenido en una rutina

rutina(&estructura);

Paso la direccin al otro mdulo para operar sobre el valor de una variable de estructura y es recibida en una variable puntero.

Ej. structu tipo_cliente cliente (declaro nombre de la estructura)cargar_datos_cliente (&cliente); y ttulo void cargar_datos_cliente(struct tipo_cliente *cliente)

OJO: cuando se recibe un puntero a una estructura, para referirnos a sus miembros hay dos formas:

1) (*puntero_estructura).miembro considerada arcaica

2) puntero_estructura -> miembro forma actual

Para carga de datos:cliente -> dia = 20; (en donde cliente-> reemplaza a (*cliente).)

cliente -> codigo_auto = M

Ej.scanf(%d, &cliente -> dia);

scanf(%s, cliente -> nombre_apellido);

c) Asignacin en un retorno de funcin

Se traspasan un conjunto de valores asociados a nica variable, la estructura.

- para asignarlo a un solo elemento de la estructura:

cliente.direccin = ingresar_direccin_cliente();

y la funcin y el prototipo van:

struct tipo_direccin ingresar_direccin_cliente (void) igual que int o char pero struct

- para asignarlo a la estructura completa cliente = cargar_datos_cliente();

y la funcin y el prototipo van:

struct tipo_cliente cargar_datos_cliente (void)

3) Vector de estructurasLos vectores de estructura pueden pasarse a otro mdulo, como todo arreglo, escribiendo el nombre del vector, lo que implica el pasaje de la direccin de inicio del mismo, no habiendo diferencia si slo se quiere mostrar el contenido o modificarlo.

Tambin pueden ser enviados cada uno de los elementos del vector de forma independiente, y en este caso cada elemento es una estructura, y as se pasa.

Ejemplo: struct tipo_tarifa tarifa [3] que crea en memoria tres variables de estructura contiguas que pueden ser manejadas de forma individual a traves dela indexacin del vector.

a) Elemento del vector

rutina (vector_estructura[ndice]); para slo mostrar.

rutina (&vector_estructura[ndice]); para poder modificarlo.

Ejemplo:

main() {

struct tipo_tarifa tarifa[3];

int i;

for (i=0 ; iimporte_diario);El otro ser: void mostrar_tarifa (struct tipo_tarifa tarifa, int i) y para referirme a sus elementos no uso la flechita, ya que aca le mand el contenido, no la direccin. printf(%d, tarifa.importe_diario);

b) Vector completo

rutina (vector_de_estructura);

Ej:cargar_tarifas (tarifas);

mando el vector de estructura

Mostrar_tarifas (tarifas);

Y ttulo como: void mostrar_tarifas (struct tipo_tarifa tarifa[])

void cargar_tarifas (struct tipo_tarifa tarifa[])