Saltar al contenido

Llamada a función por referencia en C

septiembre 23, 2021

los llamar por referencia El 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. Significa que los cambios realizados en el parámetro afectan el argumento pasado.

Para pasar un valor por referencia, los punteros de argumento se pasan a las funciones como cualquier otro valor. Por lo tanto, debe declarar los parámetros de la función como tipos de puntero como en la siguiente función intercambio(), 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 temp into y */
  
   return;
}

Llamemos ahora a la función intercambio() pasando valores por referencia como en el siguiente ejemplo:


#include <stdio.h>

int main () {

   /* local variable definition */
   int a = 100;
   int b = 200;
 
   printf("Before swap, value of a : %dn", a );
   printf("Before swap, value of b : %dn", b );
 
   /* calling a function to swap the values */
   swap(&a, &b);
 
   printf("After swap, value of a : %dn", a );
   printf("After swap, value of b : %dn", b );
 
   return 0;
}
void swap(int *x, int *y) {

   int temp;

   temp = *x; /* save the value of x */
   *x = *y;    /* put y into x */
   *y = temp; /* put temp into y */
  
   return;
}

Pongamos el código anterior en un solo archivo C, compílelo y ejecútelo, para producir 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

Muestra que el cambio también se ha reflejado fuera de la función, a diferencia de la llamada por valor, donde los cambios no se reflejan fuera de la función.

c_functions.htm

close