Chamada de função C ++ por ponteiro

o call by pointermétodo de passar argumentos para uma função copia o endereço de um argumento no parâmetro formal. Dentro da função, o endereço é usado para acessar o argumento real usado na chamada. Isso significa que as alterações feitas no parâmetro afetam o argumento passado.

Para passar o valor por ponteiro, ponteiros de argumento são passados ​​para as funções como qualquer outro valor. Portanto, você precisa declarar os parâmetros da função como tipos de ponteiro como na seguinte função swap(), que troca os valores das duas variáveis ​​inteiras apontadas por seus argumentos.

// 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;
}

Para verificar mais detalhes sobre ponteiros C ++, consulte o capítulo Ponteiros C ++ .

Por enquanto, vamos chamar a função swap() passando valores por ponteiro como no exemplo a seguir -

#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 o código acima é colocado junto em um arquivo, compilado e executado, ele produz o seguinte resultado -

Before swap, value of a :100
Before swap, value of b :200
After swap, value of a :200
After swap, value of b :100