[C con Clase] Funciones

Sorcerer sorcerer.cl en gmail.com
Mie Ene 31 05:57:27 CET 2007


Hola ^^

El pasado 2007-01-31 02:23:08, henry escribió:
 
h> alguien puede explicarme por favor, cual es la diferencia
h> si declaro una funcion de esta manera
h> long suma(long &var);
h> o de esta otra
h> long suma(long *var);

La diferencia es que una función esta recibiendo una referencia y la otra un parámetro... ¿Revisaste en el curso el capitulo dedicado a eso ?, salen varios ejemplos, la dirección es http://c.conclase.net/curso/index.php?cap=015

Pero para resumir un poquito, tus 2 ejemplos son cosas distintas. En la primera funcion: 
> long suma(long &var);
lo que estas pasando es una referencia a una variable tipo long. La gracia de eso es que no estas haciendo una "copia nueva" de la variable que exista solo dentro de la función, sino que estas trabajando con la variable original que le pasabas (ve el ejemplo del link q puse).
En cambio, en la otra función:
> long suma(long *var);
estas pasando un puntero a una variable tipo long. O sea, estas creando una nueva variable temporal que existe dentro de la función suma, esa variable es un puntero y contiene la dirección de memoria de una variable tipo long.
Ese puntero existe solo en la función, si modificas ese puntero se va a modificar solo dentro de la función (otra cosa es modificar el valor apuntado por el puntero). En cambio, las referencias son constantes.       

Creo yo que en el link que puse sale mucho mejor de lo q yo podría explicarlo, pero bueh xD

Ojalá te sirva :]


Más información sobre la lista de distribución Cconclase