Anuncios

Bienvenidos sean a este post, hoy veremos una variante de lo visto en el post anterior.

Anuncios

En el post anterior vimos como trabajar por referencia para los argumentos de nuestras funciones, pero hoy nos centraremos en una variante de lo visto en el post anterior, para ello modificaremos el codigo de ese ejemplo, sino lo poseen simplemente generen un nuevo archivo que llamaremos ejemplo12.c y le agregaremos el siguiente codigo:

ejemplo12.c

#include <stdio.h>

double PerimRect(double* a_al, double* a_an)
{
	*a_al += 10;
	*a_an += 10;
	return 2*(*a_an + *a_al);
}

int main()
{
	double alto = 15.0;
	double ancho = 22.5;
	double perimetro = PerimRect(&alto, &ancho);

	printf("Alto: %.1f\nAncho: %.1f\nPerimetro: %.2f\n", 
		alto, ancho, perimetro);

	return 0;
}
Anuncios
Anuncios

Si bien lo explicamos en el post anterior hagamos un breve repaso, antes de comentar la funcion veamos el main, en este caso tenemos dos variables de tipo double donde almacenaremos el alto y ancho del rectangulo, luego definiremos una nueva variable donde recibiremos el resultado de la funcion PerimRect, la cual llamaremos perimetro, en este caso como argumentos de la funcion pasaremos las direcciones de memoria de las variables, tal como haccemos con los apuntadores, con esto comentado pasemos a la funcion.

Anuncios
Anuncios

Para esta funcion le haremos devolver un valor de tipo double donde los argumentos son dos tipos de apuntadores, del mismo tipo que las variables del main, y en este caso como son apuntadores al pasarle las direcciones de memoria se asignaran automaticamente a estas, despues por medio de desreferenciamiento de estos apuntadores podremos incrementarlo porque no lo trabajaremos con las direcciones de memoria sino con los valores en dichas ubicaciones, por ultimo devolvemos el resultado del calculo del perimetro, noten que para esta formula volvemos a usar las desreferencias de los apuntadores.

Anuncios
Anuncios

Volviendo al main, no comentamos lo ultimo que es la represeentacion de los valores que tenemos en nuestro codigo, aqui ya deberemos poder ver no solamente el valor de perimetro sino los nuevos valores de alto y ancho, y antes de finalizar vamos a mencionar la diferencia principal con respecto al codigo del post anterior, en este caso es que al momento de pasar la direccion de memoria a la funcion lo haciamos por medio de de dos apuntadores que definiamos antes de llamar a la funcion, aqui eliminamos esa definicion dado que pasamos directamente los valores de la direccion de memoria de cada variable, con esto comentado compilemos y veamos su salida:

tinchicus@dbn001vrt:~/lenguajes/C$ ./prog/ejemplo12
Alto: 25.0
Ancho: 32.5
Perimetro: 115.00
tinchicus@dbn001vrt:~/lenguajes/C$
Anuncios

Si lo comparamos con el post anterior veremos que seguimos con la misma salida, es decir que los valores se siguien modificando sin necesidad de crear un apuntador a las variables sino creando los apuntadores en la funcion y pasando los valores de memoria a estas.

Anuncios

En resumen, hoy hemos visto como trabajar por referencia pero sin apuntadores, simplemente aprovechando el envio de la direccion de memoria, recuerden que es una opcion mas y no reemplaza a lo visto en el post anterior, espero les haya sido de utilidad sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Anuncios

Donación

Es para mantenimento del sitio, gracias!

$1.50