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);
....
}