Tengo un problema con las referencias. Considere este código:Referencias como argumentos de funciones?
void pseudo_increase(int a){a++;}
int main(){
int a = 0;
//..
pseudo_increase(a);
//..
}
En este caso, el valor de la variable a
no va a aumentar a medida que un clon o traspasó copia del mismo y no variable misma.
Consideremos ahora otro ejemplo:
void true_increase(int& a){a++;}
int main(){
int a = 0;
//..
true_increase(a);
//..
}
Aquí se dice valor de a
aumentará - pero ¿por qué?
Cuando se llama true_increase(a)
, se pasará una copia de a
. Será una variable diferente. Por lo tanto, &a
será diferente de la dirección verdadera de a
. Entonces, ¿cómo se incrementa el valor de a
?
Corrígeme donde estoy equivocado.
Probablemente deba utilizar identificadores diferentes para el argumento de función y la variable que se le pasa para que no se confunda aún más. – AusCBloke
Pasar por referencia no crea una copia. Es una referencia a la misma variable. – jweyrich
Te sugiero que primero aprendas acerca de los punteros sobre cómo las referencias pueden reducir el dolor de objetos no inicializados y punteros no válidos, etc. ¡Elige cualquiera de tus libros de C/C++ favoritos! – sarat