10/06/2011, 14:47
|
| | | Fecha de Ingreso: marzo-2010 Ubicación: Lima - Perú
Mensajes: 324
Antigüedad: 14 años, 9 meses Puntos: 71 | |
Respuesta: Referencia Cita:
Iniciado por MaRcElTeLlA 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. Lo que menciona el compañero MaRcElTeLlA no es del todo cierto, pués un arreglo siempre pasa por referencia y no por valor.
__________________ % El mejor guerrero no es el que triunfa siempre sino el que vuelve sin miedo a la batalla. % |