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:
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 *&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; }
-----------
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ì:
Se lo scrivessi così cosa cambierebbe?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; }

Rispondi quotando