Tema: Referencia
Ver Mensaje Individual
  #4 (permalink)  
Antiguo 10/06/2011, 13:28
Avatar de MaRcElTeLlA
MaRcElTeLlA
 
Fecha de Ingreso: mayo-2010
Ubicación: Martorell
Mensajes: 66
Antigüedad: 13 años, 11 meses
Puntos: 5
Respuesta: Referencia

Hola,

bueno, en C++ tienes un par de maneras de hacer que una variable obtenga el valor al modificarla.


1. Usando punteros.

Si tu lo que le metes a la función es un puntero. Al modificar el contenido de ese puntero(donde apunta), modificarás directamente la variable que quieres.

void cambiandoValor(int* i)
{
*i = 3; //Decimos, (*i) dónde apunta i, por eso el *, le asignamos el valor 3.
// i sigue siendo una dirección de memoria por eso, pero estas modificando su contenido
}

2.Pasando la variable por referencia

void cambiandoValor(int& i)
{
i=3;
}


En esta segunda función directamente haces lo que tú querias.

Qué ventaja hay en hacer esto respecto a quitarle el &??

Bien, cuando es un int no hay problema, pero si no pones el & lo que estas haciendo es una copia de todo lo que le entres a la función, y imagina que lo que le metes en lugar de ser un int es un array de imàgenes, con todos sus píxeles y todos sus canales y demás, claro para copiar eso se morirá, y la performance se verá muy afectada.


Por esa razon cuando se trabaja con datos grandes y tal está bien pasarlo por referencia (&)



Bueno, espero que te sirva chico, si hay alguna otra duda o algo no te ha quedado claro, comenta.