Chiamata di funzione C ++ tramite puntatore
Il call by pointerIl metodo per passare argomenti a una funzione copia l'indirizzo di un argomento nel parametro formale. All'interno della funzione, l'indirizzo viene utilizzato per accedere all'argomento effettivo utilizzato nella chiamata. Ciò significa che le modifiche apportate al parametro influiscono sull'argomento passato.
Per passare il valore tramite puntatore, i puntatori agli argomenti vengono passati alle funzioni proprio come qualsiasi altro valore. Quindi di conseguenza è necessario dichiarare i parametri della funzione come tipi di puntatore come nella funzione seguente swap(), che scambia i valori delle due variabili intere puntate dai suoi argomenti.
// function definition to swap the values.
void swap(int *x, int *y) {
int temp;
temp = *x; /* save the value at address x */
*x = *y; /* put y into x */
*y = temp; /* put x into y */
return;
}
Per controllare maggiori dettagli sui puntatori C ++, si prega di controllare il capitolo Puntatori C ++ .
Per ora, chiamiamo la funzione swap() passando i valori dal puntatore come nell'esempio seguente -
#include <iostream>
using namespace std;
// function declaration
void swap(int *x, int *y);
int main () {
// local variable declaration:
int a = 100;
int b = 200;
cout << "Before swap, value of a :" << a << endl;
cout << "Before swap, value of b :" << b << endl;
/* calling a function to swap the values.
* &a indicates pointer to a ie. address of variable a and
* &b indicates pointer to b ie. address of variable b.
*/
swap(&a, &b);
cout << "After swap, value of a :" << a << endl;
cout << "After swap, value of b :" << b << endl;
return 0;
}
Quando il codice sopra viene messo insieme in un file, compilato ed eseguito, produce il seguente risultato:
Before swap, value of a :100
Before swap, value of b :200
After swap, value of a :200
After swap, value of b :100