Ho un dubbio che mi affligge, sul mio libro di testo viene detto che * annulla &, sono due operazioni inverse.
Però poi c'è una parte di codice in cui in una funzione vengono passati i puntatori con *&, riporto qua il codice presente:
codice:
#include <iostream>
void fp(int *& rpa, int* pb)
{ if (*rpa <= *pb)
rpa=pb;
}
main()
{ int x, y;
int *px = &x;
int *py= &y;
cin>>x>>y;
fp (px, py)
cout << *px<<endl;
return 0;
}
Cosa sarebbe cambiato se nei parametri formali della funzione avessi messo soltanto *rpa? Non mi è chiaro questo concetto, se * e & si annullano allora è come se nella funzione avessi passato "rpa" senza niente e quindi un indirizzo! Non capisco il senso di *&
-----------
edit: Ho provato a inserire il codice su devc++ e in effetti mettendo solo *rpa non funziona, per farlo funzionare dovrei cambiare il codice così:
codice:
#include <iostream>
using namespace std;
void fp(int *rpa, int* pb)
{ if (*rpa <= *pb)
*rpa=*pb; //invece di rpa=pb
}
main()
{ int x, y;
int *px = &x;
int *py= &y;
cin>>x>>y;
fp (px, py);
cout << *px<<endl;
return 0;
}
Se lo scrivessi così cosa cambierebbe?