Chamada de função C ++ por referência

o call by referencemétodo de passar argumentos para uma função copia a referência de um argumento para o parâmetro formal. Dentro da função, a referência é usada 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 referência, a referência do argumento é passada para as funções como qualquer outro valor. Portanto, você precisa declarar os parâmetros da função como tipos de referência como na seguinte funçãoswap(), 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;
}

Por enquanto, vamos chamar a função swap() passando valores por referência 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 using variable reference.*/
   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