Pasaje de argumentos

En general, en cualquier lenguaje de programación de alto nivel, se permiten dos maneras de pasaje de argumentos: por valor y por referencia, uno soportado en forma estándar y el otro a través de una forma alternativa.

Cuando un argumento se pasa por valor, la función llamada recibe una copia del argumento, pudiendo modificarla libremente sin alterar el valor original.

Cuando un argumento se pasa por referencia, más que el valor mismo del argumento, lo que se pasa es la dirección de memoria donde ese valor está almacenado. Por lo tanto, la función llamada puede modificar el valor original directamente.

La forma de pasajes de argumentos estándar del lenguaje C es realizar este pasaje por valor. Si, en cambio, el argumento pasado es un arreglo, lo que en realidad se pasa a la función llamada es la dirección de memoria del primer elemento del arreglo.

Ejemplo:

ejem_pasajearg.c
/* Ejemplo de tipos de pasaje de argumentos  */
#include <stdio.h>
void Permuta(int v1, int v2);
void PermutaArray(int v12[]);
main()
{
  int x=1, y=2;
  int a[] = {1,2};

  printf("Antes:   x=%d, y=%d\n",x,y);
  Permuta(x,y);
  printf("Después: x=%d, y=%d\n",x,y);

  printf("Antes:   a={%d,%d}\n",a[0],a[1]);
  PermutaArray(a);
  printf("Después: a={%d,%d}\n",a[0],a[1]);
}
/* Permuta dos variables???   */
void Permuta(int x, int y)
{
  int aux;
  aux = x;
  x=y;
  y=aux;
}
/* Permuta dos elementos de un arreglo???   */
void PermutaArray(int x[])
{
  int aux;
  aux = x[0];
  x[0]=x[1];
  x[1]=aux;
}

ICOM