Punteros como argumentos a funciones

Aunque ya lo hemos visto, lo repetimos aquí, para entenderlo mejor tras haber visto el concepto de puntero. Vimos al hablar de funciones que los parámetros se podían pasar por valor o por referencia usando punteros. En este segundo caso, pasamos a la función la dirección de la variable, por lo que si modificamos el contenido de esa dirección (no el contenido del puntero, si no el contenido de la dirección apuntada por el puntero), esa modificación será vista al acabar la ejecución de la función. Ésta es una manera de que una función pueda modificar variables de la función que la llamó.

Ejemplo_punt_3. Repetimos el último Ejemplo del apartado de funciones, pero ahora usando punteros que nos van a permitir intercambiar el valor de dos variables.

#include <stdio.h>

/* Prototipo */

void cambia (int *var1, int *var2);

 

int main ()

  {

  int i=1, j=2;

  printf ("Valores antes de funcion Cambia: i=%d, j=%d", i, j);

  Cambia (&i, &j);

  printf ("Valores despues de funcion Cambia: i=%d, j=%d", i, j);

  return 0;

  }

 

/* Definición */

void cambia (int *a, int *b)

  {

  int tmp;

  tmp = *a;

  *a = *b;

  *b = tmp;

  }