Pero claro que existe una diferencia.
int& es azúcar sintáctica para manejar punteros.
Y como tal claro que existe una diferencia entre int* e int*&
Código C++:
Ver original#include <iostream>
using namespace std;
void f1(int *f) {
int a = 10;
f = &a;
cout << "f1 " << f << endl;
}
void f2(int *&f) {
int a = 10;
f = &a;
cout << "f2 " << f << endl;
}
int main() {
int f = 10;
int *p = &f;
cout << "1 " << p << endl;
f1(p);
cout << "1 " << p << endl;
cout << "2 " << p << endl;
f2(p);
cout << "2 " << p << endl;
return 0;
}
Mira como la primer función `f1` pasa el valor por copia. Mientras la segunda función `f2` pasa el puntero por
referencia.
En cualquiera de los 2 casos ten cuidado.