Llamada a función C ++ por puntero

los call by pointerEl método de pasar argumentos a una función copia la dirección de un argumento en el parámetro formal. Dentro de la función, la dirección se usa para acceder al argumento real usado en la llamada. Esto significa que los cambios realizados en el parámetro afectan el argumento pasado.

Para pasar el valor por puntero, los punteros de argumento se pasan a las funciones como cualquier otro valor. Entonces, en consecuencia, debe declarar los parámetros de la función como tipos de puntero como en la siguiente función swap(), que intercambia los valores de las dos variables enteras apuntadas por sus 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 comprobar más detalles sobre los punteros de C ++, consulte el capítulo Punteros de C ++ .

Por ahora, llamemos a la función swap() pasando valores por puntero como en el siguiente ejemplo:

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

Cuando el código anterior se junta en un archivo, se compila y se ejecuta, produce el siguiente 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