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:
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.