Il passaggio dei parametri

Il passaggio dei parametri in C++

Per valore

Quando il passaggio dei parametri avviene per valore, alla funzione viene in effetti passata solo una copia dell’argomento. Grazie a questo meccanismo il valore della variabile nel programma chiamante non viene modificato.
Esempio: supponiamo di voler caricare un vettore vet di dimensione dim e successivamente vogliamo visualizzarne il contenuto, lo script sarà il seguente

Mentre, nel passaggio di parametri per indirizzo, alla funzione viene passato l’indirizzo e non il valore dell’argomento. Nel nostro esempio la variabile dim cambierebbe il suo valore qualora essa venisse letta all’interno della procedura carica. Pertanto la variabile dim (parametro) dovrà essere passata per indirizzo e non per valore.
Lo script sarà il seguente:

Creiamo ora la procedura visualizza:

Aggiungiamo una funzione che effettui la somma degli elementi con l’introduzione del parametro s che memorizzerà il valore della somma

E infine sostituiamo la funzione somma con una ricorsiva

Il grassetto evidenziato nel prototipo della funzione è dovuto al fatto che gli elementi del vettore occupano le posizioni da 0 a n-1 e pertanto la posizione dim-1 è uguale all’ultima posizione all’interno del vettore.
N.B. Se avessimo scritto la funzione nel seguente modo:

Il C++ consente un nuovo passaggio dei parametri per riferimento: il reference.
Un reference è sempre un contenitore di indirizzi, ma si può adoperare come una normale variabile. Il nuovo costrutto richiede l’uso dell’operatore & (e commerciale) che non ha più il significato di “indirizzo di” ma quello di “riferimento a”. Il reference non è una copia della variabile, ma la stessa variabile sotto un  altro nome (alias) ovvero un sinonimo.

Supponiamo di voler creare una funzione di nome minimo in grado di determinare il valore più piccolo tra due interi.

Vediamo il codice:

#include<iostream>
#include<cstdlib>
using namespace std;
void minimo (int a,int b,int& c)
{
if (a<=b) c=a;
else        c=b;
}
main()
{
int x,y,m;
cout<<“Primo numero: “;
cin>>x;
cout<<“Secondo numero: “;
cin>>y;
//passaggio per reference
minimo(x,y,m);
cout<<“Il minimo tra “<<x<<” e “<<y<<” risulta “<<m<<endl;
system(“pause”);
}

PHP Code Snippets Powered By : XYZScripts.com