Tarea
Escriba un procedimiento que intercambie los valores de dos variables.
La peculiaridad de esta tarea es que necesitamos que los cambios realizados en el procedimiento sean conocidos por el programa que llama.
Intentemos escribir el procedimiento así:
static void Swap (int a, int b) // con tal descripción de los parámetros del procedimiento,
{ // copiará los valores de los argumentos (x e y)
intc; // las variables a y b son variables independientes no relacionadas con x e y
c = un; a = b; b=c;
}
vacío estático principal ()
{
entero x=1, y=2;
Intercambiar (x, y); //los valores de las variables x e y (argumentos) se copian en los parámetros a y b, x = 1, y = 2
}
Si ejecuta este programa, puede ver que los valores de las variables x e y no han cambiado. Para que los parámetros cambien los valores de los argumentos, debe utilizar datos que pasan por referencia. Para ello, debe escribir ref
antes del nombre del tipo de datos en el encabezado de la subrutina.
void Swap (ref int a, ref int b) // ahora las variables a y b obtienen las direcciones de las variables x e y en la memoria
{
intc;
c = un; a = b; b=c;
}
vacío estático principal ()
{
entero x=1, y=2;
Intercambiar (ref x, ref y);
Aplicación: si pasa un argumento por referencia, entonces solo el nombre de la variable (NO un número y NO una expresión aritmética) puede estar en este lugar al llamar al procedimiento.
No se puede llamar a un procedimiento como este:
Intercambiar (x, 4);
Intercambiar (5+x, y);