El paso de parámetros por referencia se realiza cuando el subprograma debe modificar alguna variable del programa que le llama. Para ello, es necesario que el subprograma conozca la dirección de memoria de la variable. Para indicar que los parámetros de un subprograma son por referencia, se indicará explícitamente, en su prototipo:

PSEUDOCODIGO C
var p1:tipo, var p2:tipo ......, var pN: tipo tipo p1, tipo p2, ........., tipo pN

En C el paso de parámetros por referencia se realiza enviando al subprograma las direcciones de memoria de los parámetros mediante el operador & y por tanto los parámetros que figuran en la cabecera deben ser punteros para poder recogido las direcciones de memoria enviadas.

PSEUDOCODIGO C
NombreSubprograma (par1, par2, ...., parN) NombreSubprograma (&par1, &par2, ...., &parN)

Ejemplo Acción Intercambio

Pseudocódigo:

Acción Intercambio (var a :entero; var b:enter)
var aux: entero; fvar
  aux:=A;
  A:=B;
  B:=aux;
facción

En C:

void Intercambio (int A, int B) {
  int aux;
  aux = *A;
  *A = *B;
  *B= aux;
}

Por tanto un algoritmo que hiciese uso del anterior procedimiento, podría ser:

Pseudocódigo:

Programa EjemploInt
var x, y :entero; fvar
  Leer (x,y),
  ........
  Intercambio(x,y);
  ....
fPrograma

En C:

#include <stdio.h>

void Intercambio(int A, int B);

void main() {
  int x,y;
  .....
  scanf("%d %d", &x, &y);
  ......
  Intercambio(&x, &y);
  ....
}
Pin It