Si adesso ti posto degli esempi.
Esempio con passaggio di parametri per valore o copia:
// esempio di funzione
#include <iostream>
using namespace std;
int somma (int a, int b)
{
int r;
r=a+b;
return r; //NOTARE la presenza del return
}
int main ()
{
int z;
z = somma (5,3);
cout << "Il risultato e' " << z;
return 0;
}
Esempio con passaggio di parametri per riferimento o variabile:
// passaggio di parametri per riferimento
#include <iostream>
using namespace std;
void raddoppia (int &a, int &b, int &c)
{
a=a*2;
b=b*2; //non presenza del return
c=c*2;
}
int main ()
{
int x=1, y=3, z=7;
raddoppia (x, y, z);
cout << "x=" << x << ", y=" << y << ", z=" << z;
return 0;
}
Il mio dubbio è:
in molti esempi ho notato che nelle definizioni delle funzioni chiamate quando vi è il passaggio di parametri per valore dalla funzione chiamante a quella chiamata , vi è il return del valore.
Invece quando vi è un passaggio di parametri per riferimento nella definizione delle funzioni chiamate non vi è piu il return.
L'unica spiegazione che mi sono fatto è che , mentre nel passaggio di parametri per valore vi è una preventiva copia quindi il return serve per restituire il valore mentre nel passaggio di parametro per riferimenti si agisce direttamente sulla variabile e nel caso modificarla quindi non vi è bisogno del return nella definizione della funzione chiamata.
Un altro dubbio: ma con il passaggio di parametri per riferimento, posso fare più operazioni/istruzioni all'interno del corpo della funzione chiamata?rispetto a un passaggio di parametri per valore?