logo

Funzioni C++: passaggio per riferimento

Esistono diversi modi in cui i dati (o le variabili) possono essere inviati come argomento a una funzione. Due di quelli comuni sono Passaggio per valore e Passaggio per riferimento. Il passaggio per riferimento consente a una funzione di modificare una variabile senza crearne una copia. Dobbiamo dichiarare le variabili di riferimento. La posizione di memoria della variabile e del parametro passati è la stessa. Pertanto, qualsiasi modifica al parametro si riflette anche nella variabile all'interno della sua funzione genitore. Questo articolo si concentra sulla discussione su come passare variabili per riferimento in C++.

Che cos'è un passaggio per riferimento?

Quando una variabile viene passata come riferimento a una funzione, l'indirizzo della variabile viene memorizzato in una variabile puntatore all'interno della funzione. Pertanto, la variabile all'interno della funzione è un alias per la variabile passata. Pertanto, qualsiasi operazione eseguita sulla variabile all'interno della funzione si rifletterà anche nella funzione chiamante.



  • Questa capacità di riflettere le modifiche potrebbe restituire più di un valore per una funzione.
  • Inoltre, una funzione void potrebbe tecnicamente restituire valore/i utilizzando questo metodo.

IL & L'operatore (indirizzo di) denota valori passati tramite passaggio per riferimento in una funzione. Di seguito è riportato il programma C++ per implementare il pass-by-reference:

C++

database delle proprietà degli acidi








// C++ program to implement> // pass-by-reference> #include> using> namespace> std;> > void> f(>int> & x)> {> >x--;> }> > // Driver code> int> main()> {> >int> a = 5;> >cout << a << endl;> >f(a);> >cout << a << endl;> }>

>

>

Produzione

5 4>

Spiegazione:

  • Innanzitutto una funzione viene definita con il tipo di dati restituito void e assume valore per riferimento (come indicato da & segno dell'indirizzo nei parametri formali).
  • La funzione decrementa il valore del suo parametro formale di 1.
  • Dopodiché, all'interno della funzione main, una variabile intera denominata UN viene inizializzato con il valore 5.
  • Il valore di 'a' è stampato sulla console. Viene chiamata la funzione f() e la variabile viene passata come argomento.
  • All'interno della funzione, il valore della variabile viene diminuito di 1.
  • Al ritorno dalla funzione viene nuovamente visualizzato il valore della variabile, che risulta essere 1 in meno rispetto al valore originale.

Pertanto, le modifiche apportate a una variabile passata tramite riferimento a una funzione si riflettono nella funzione chiamante.

Funzione di scambio tramite Pass-By-Reference

La funzione swap scambia i valori delle due variabili che riceve come argomenti. Di seguito è riportato il programma C++ per scambiare i valori di due variabili utilizzando il pass-by-reference.

C++

mappa dattiloscritta




// C++ program to swap the values> // of two variables using> // pass-by-reference> #include> > // Prototype of the function> void> swap(>int> &,>int> &);> > // Driver code> int> main()> {> >int> x, y;> > >// Inputting two variables> >printf>(>'Enter the value of x and y '>);> >scanf>(>'%d%d'>, &x, &y);> > >// Displaying their values before swapping> >printf>(>'Before Swapping x = %d y = %d '>,> >x, y);> > >// Calling the function & sending variable> >// values as argument> >swap(x, y);> > >// Displaying their values after swapping> >printf>(>'After Swapping x = %d y = %d '>,> >x, y);> >return> 0;> }> > // Function uses pass by reference method> // to swap passed variable values> void> swap(>int> &a,>int> &b)> {> >int> temp;> > >temp = b;> >b = a;> >a = temp;> }>

upcasting
>

>

Produzione:

C++: funzione di scambio utilizzando Pass-By-Reference

Spiegazione:

  • Per prima cosa viene definito il prototipo della funzione (facoltativo se la funzione è definita prima della funzione principale).
  • All'interno della funzione main, i valori delle due variabili vengono presi come input dall'utente.
  • I valori prima di chiamare la funzione swap vengono stampati sulla console.
  • Dopodiché, i valori vengono passati come argomento alla funzione di scambio.
  • La funzione swap utilizza call-by-reference e contiene il codice per scambiare le due variabili.
  • Al termine della funzione, il valore delle due variabili viene visualizzato nella funzione principale (dopo la chiamata allo swap).
  • I valori scambiati vengono visualizzati sullo schermo.

Passa per riferimento con i puntatori

È anche possibile passare l'indirizzo della variabile dalla funzione chiamante e usarli come puntatore all'interno della funzione chiamata. Ciò consente un po' più esplicitamente la modifica dei valori delle variabili nella funzione.

Di seguito è riportato il programma C++ per implementare il pass-by-reference con i puntatori:

C++




// C++ program to implement> // pass-by-reference with> // pointers> #include> using> namespace> std;> > void> f(>int> *x)> {> >*x = *x - 1;> }> > // Driver code> int> main()> {> >int> a = 5;> >cout << a << endl;> >f(&a);> >cout << a << endl;> }>

menu impostazioni android

>

>

Produzione

5 4>

Spiegazione:

  • Innanzitutto una funzione viene definita con il tipo di dati restituito void e assume valore come puntatori (come indicato con * asterisco accedere ai parametri formali).
  • La funzione decrementa il valore del suo parametro formale di 1.
  • Dopodiché, all’interno della funzione main, una variabile intera denominata “a” viene inizializzata con il valore 5.
  • Quindi viene visualizzato questo valore. Viene chiamata la funzione e l'indirizzo della variabile viene passato come argomento.
  • All'interno della funzione, il valore della variabile puntatore viene decrementato di 1.
  • Al ritorno dalla funzione viene nuovamente visualizzato il valore della variabile, che risulta essere 1 in meno rispetto al valore originale.