Visualizzazione dei risultati da 1 a 1 su 1

Visualizzazione discussione

  1. #1

    Domanda su puntatore e funzione

    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?
    Ultima modifica di Blitzcrank; 27-11-2016 a 18:56

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.