Isobel
Hay dos formas de pasar argumentos / parámetros a una función. Un método es Llamar por valor y el otro método es Llamar por referencia.
Llamada por valor: en la llamada por valor, la programación envía la copia de un argumento / parámetro a una función. El programador no está pasando la variable real. Dado que solo la copia de la variable se pasa a la función, cualquier cambio / modificación realizado dentro de una función no afecta la variable y el valor de la variable permanece igual después de la llamada a la función.
El siguiente ejemplo lo aclarará;
Suponga que a = 2 antes de la llamada a la función
Void function (int a)
{
a = a + a;
a = a - 5;
}
Dado que solo se pasa una copia de la variable "a" a la función, es por eso que incluso después de la llamada a la función, el valor de a seguirá siendo 2.
Llamada por referencia: en la llamada por Referencia, la dirección del argumento / parámetro se pasa a la función. En palabras simples, la variable real o un puntero se pasa a la función y el valor de la variable se puede cambiar / modificar dentro de una función.
Por ejemplo; suponga que a = 2 antes de la llamada a la función
Después de pasar este valor a una función como
Void function (int & a)
{
* a = * a + * a;
* a = * a - 5;
}
El valor de a se convertirá en "1" después de llamar a esta función.
Lonnie
Los argumentos pasados a la función pueden ser de dos tipos:
1. Valores pasados
2. Dirección transferida
El primer tipo se refiere a la llamada por valor y el segundo tipo se refiere a la llamada por referencia.
Por ejemplo, considere program1
main ()
{
int x = 50, y = 70;
intercambio (x, y);
printf ("x =% dy =% d", x, y);
}
intercambio (x1, y1)
int x1, y1;
{
int z1;
z1 = x1;
x1 = y1;
y1 = z1;
printf ("x1 =% d y1 =% d", x1, y1);
}
Aquí el intercambio de valor a función se pasa por valor.
Considere program2
main ()
{
int x = 50, y = 70;
intercambio (& x, & y);
printf ("x =% dy =% d", x, y);
}
intercambio (x1, y1)
int * x1, * y1;
{
int z1;
z1 = * x1;
* x1 = * y1;
* y1 = z1;
printf ("* x =% d * y =% d", x1, y1);
}
Aquí la función se llama por referencia. En otras palabras, la dirección se pasa usando el símbolo & y se accede al valor usando el símbolo *.
La principal diferencia entre ellos se puede ver analizando la salida de program1 y program2.
La salida del programa1 que se llama por valor es
x1 = 70 y1 = 50
x = 50 y = 70
Pero la salida del programa2 que es llamada por referencia es
* x = 70 * y = 50
x = 70 y = 50
Esto se debe a que en el caso de la llamada por valor, el valor se pasa a la función nombrada como intercambio y allí, el valor se intercambió y se imprimió como
x1 = 70 y1 = 50
y nuevamente, ya que no se devuelven valores y, por lo tanto,
se imprimieron los valores originales de xey como en la función principal, a saber,
x = 50 y = 70.