Aiuto con Passaggio parametri per riferimento

di il
1 risposte

Aiuto con Passaggio parametri per riferimento

Ciao a tutti vorrei capire bene quando viene usato il pasaggio per valore e quando per riferimento;la teoria l'ho capita ma non riesco a metterla in pratica..so ke e un argomento semplice per questo non vorrei perdere tempo propio su qsto..vi allego un programma x il calcolo dell area e del perimetro;gentilmente mi potete spiegare il diverso funzionamento senza il passaggio per riferimento?grazie 1000 a tutti.

#include<iostream>
using namespace std;


void calcolaAP(int x,int y,int & a,int & p)
{
a= x*y;
p=2*x+2*y;

}

int main()
{
int b,h;
cin>>b>>h;
int area,perimetro;

calcolaAP(b,h,area,perimetro);
cout<<area<<endl;
cout<<perimetro;

}

1 Risposte

  • Re: Aiuto con Passaggio parametri per riferimento

    Il passaggio x riferimento è indispensabile per poter modificare il contenuto di una variabile dichiarata in un'altra funzione (e non solo). Il passaggio per valore crea una nuova variabile copiandone il contenuto e la distrugge all'uscita della funzione.
    Dal tuo src modificato ti allego un esempio:
    
    #include<iostream>
    using namespace std;
    
    void calcolaA1(int x,int y,int & a)
    {
      a=x*y;
    }
    
    int calcolaA2(int x,int y)
    {
      return (x*y);
    }
    
    void calcolaA3(int x,int y,int a)
    {
      a= x*y;
    }
    
    int main()
    {
      int a,b,h;
      
      cin>>b>>h;
    
      a=0;
      calcolaA1(b,h,a); // OK
      cout<<a<<endl;
      
      a=0;
      a=calcolaA2(b,h); // OK
      cout<<a<<endl;
      
      a=0;
      calcolaA3(b,h,a); // WRONG
      cout<<a<<endl;
      
      return 0;
    }
    
    
    CalcolaA3 crea un'altra variabile 'a' copiando il contenuto del chiamante (zero), esegue la moltiplicazione registrando il prodotto nella nuova 'a' ed in uscita libera la memoria -ovviamente errando-

    Saluti,
    Max
Devi accedere o registrarti per scrivere nel forum
1 risposte