Primero mira un ejemplo
#include <iostream>
using namespace std;
int change(int r)
{
r++;
}
int main()
{
int x = 5;
change(x);
cout << "x = " << x << endl;
return 0;
}
Después de pasar x a la función de cambio, y luego generar el valor de x, no cambiará, porque la x pasada a la función de cambio solo es equivalente a una copia de la x original en la función principal, y la salida final sigue siendo 5;
Si realmente desea cambiar el valor de x, debe usar una referencia en C ++, es decir, agregar un ampersand antes del parámetro formal pasado en la función de cambio:
#include <iostream>
using namespace std;
int change(int &r)
{
r++;
}
int main()
{
int x = 5;
change(x);
cout << "x = " << x << endl;
return 0;
}
Por supuesto, si usa la sintaxis C simple (c simple) para lograrlo, necesita usar punteros, puede obtener el mismo efecto
#include <iostream>
using namespace std;
void change(int *r)
{
++(*r);
}
int main()
{
int x = 5;
int *p = &x;
printf("%d\n",x);
change(p);
printf("%d\n",x);
return 0;
}
Entonces, si desea definir una variable de referencia, ¿cómo debe implementarse?
el código se muestra a continuación:
#include <iostream>
using namespace std;
int a = 5,b = 6;
int *p = &a;
int *q = &b;
void change(int *&r)
{
r = q;
}
int main()
{
cout << *p << endl;
change(p);
cout << *p << endl;
return 0;
}