Passaggio parametri ad una funzione

di zio_mangrovia il
3 risposte
Buongiorno,
premesso che ho abbastanza chiaro cosa significa passaggio un parametro per valore o riferimento ma non compreso bene il caso 1 di seguito descritto:

caso1:
int i=1, j=3;
scambia (i,j);

void scambia (int& ra, int& rb)
{
int t=ra;
ra=rb;
rb=t;
}

caso 2:
int i=1, j=3;
scambia (&i,&j);

void scambia (int* pa, int* pb)
{
int t=*pa;
*ra=*rb;
*rb=t;
}


Nel caso 2 anteponiamo ai parametri attuali il simbolo & per esplicitare che passiamo alla funzione l'indirizzo di memoria delle variabili i e j, corretto?
Nel caso 1 invece passiamo alla funzione il solo riferimento (si dice così giusto?!) cioè il nome delle variabili i e j ma i parametri formali sono di tipo int &, che significa?!

3 Risposte

  • 1) sono reference, non puntatori. I reference sono alias della variabile passata alla funzione.
    Se scrivi:
    
    void test(int& p) {
        cout << &p << endl;
    }
    ...
    int t;
    cout << &t << endl;
    test(p); 
    
    otterrai lo stesso indirizzo.

    2) si.
    3) Giusto.
  • shodan ha scritto:


    test(p);
    forse volevi dire test(t); ?
    giusto?
  • Si, errore mio.
Devi accedere o registrarti per scrivere nel forum
3 risposte