[C con Clase] Dudas sobre el capítulo 15: parámetros por referencia
JoseL
joselubar en gmail.com
Mar Ene 8 20:23:32 CET 2008
Hola, tengo un par de dudas relacionadas con los "parámetros por referencia" del capitulo 15.
Por ejemplo, en el código:
int main()
{
int a = 3;
int &r = a;
int *p;
int *q;
p = &a;
q = &r;
cout << "3*3 = " << a + r + *p << endl;
cout << Mas1Cuadrado(a) << " = (3+1)^2 = " << a << "^2" << endl;
cout << Mas1Cubo(p) << " = (4+1)^2 = " << a << "^3" << endl;
/*
3*3 = 9
16 = (3+1)^2 = 4^2
125 = (4+1)^2 = 5^3
*/
return 0;
}
int Mas1Cuadrado(int &n)
{
n++;
return n * n;
}
int Mas1Cubo(int *q)
{
++*q;
return *q * *q * *q;
}
¿es p == q? es decir ¿son 'a' y 'r' la misma variable, la misma dirección de memoria, pero con distinto nombre, o bien son variables distintas, ocupando distintas direcciones de memoria, aunque tomen el mismo valor?
Y otra cuestión que me ronda ¿Para qué queremos las referencias si podemos hacer lo mismo con los punteros? me explico: ¿No da lo mismo hacer
int &r = a
y usar 'r' como referencia, que hacer
int *p;
p = &a;
y usar *p ?
Es como si fuera lo mismo pero dado la vuelta, como las potencias y las raices. Y para manipular la variable 'a' ¿qué diferencia hay en la práctica pasarla por referencia, como en la función 'int Mas1Cuadrado(int &n)' o utilizar un puntero como en 'int Mas1Cubo(int *q)' ?
Más información sobre la lista de distribución Cconclase