Muchos lenguajes de programación usan funciones. Una función es un conjunto de instrucciones para realizar una tarea específica. El código principal se puede dividir en varias funciones y llamarlos. Hay dos formas de llamar a una función, como llamada por valor y llamada por referencia. En el método de llamada por valor, las copias de las variables se pasan a la función. Si hay un cambio en el valor de la función, no cambia el valor original. En la llamada por referencia, los cambios de la variable dentro de la función reflejan el valor original. los diferencia clave entre llamada por valor y llamada por referencia es que, en llamada por valor, la copia de las variables se pasa a la función y en la llamada por referencia, las direcciones de las variables se pasan a la función. Este artículo discute la diferencia entre llamada por valor y llamada por referencia.
1. Resumen y diferencia clave
2. Qué es Call by Value
3. ¿Qué es la llamada por referencia?
4. Similitudes entre llamada por valor y llamada por referencia
5. Comparación lado a lado: llamada por valor frente a llamada por referencia en forma de tabla
6. Resumen
En la llamada por valor, las copias de las variables se pasan a la función. La función puede cambiar ese valor copiado pero no cambia el valor original. Este concepto se puede entender fácilmente intercambiando el programa de dos números. Consulte el siguiente programa de C escrito en el entorno de bloques de código.
Figura 01: Programa para intercambiar dos números
De acuerdo con el programa dado a continuación, la variable 'a' tiene un valor 20 y la variable 'b' tiene un valor 30. Al llamar a la función swap (a, b), estos dos valores se pasan a la función swap. En la función de intercambio, 'a' se copia en 'x' y 'b' se copia en 'y'. Ahora, 'x' tiene un valor 20 y 'y' tiene un valor 30. Usando la variable temp, se intercambian los dos valores. Al imprimir el valor de 'x' y 'y' dentro de esa función de intercambio, la salida dará 30 para 'x' y 20 para 'y'. Cuando finaliza la ejecución de la función de intercambio, el control vuelve a la función principal. Al imprimir los valores de 'a' y 'b', en la función principal, los resultados serán los valores originales. Son 20 para 'a' y 30 para 'b'. Los cambios realizados mediante la función de intercambio no se reflejan en el programa principal.
Figura 02: Salida del programa de intercambio
'x' e 'y' dentro de la función de intercambio tienen los valores intercambiados que son 30 y 20, pero esos valores no se pueden usar en el programa principal. Aunque 'x' y 'y' tienen valores intercambiados, son variables locales para intercambiar la función y la función principal no puede acceder a ellas. Para evitar este problema, puede utilizarse la llamada por referencia.
En este método, las direcciones de las variables se envían a la función. Consulte el siguiente programa de C escrito en el entorno de bloques de código.
Figura 03: Intercambio de dos números utilizando punteros
De acuerdo con el siguiente ejemplo, el valor de 'a' es 20 y el valor de 'b' es 30. En lugar de pasar copias de 'a' y 'b', el programador puede enviar las direcciones de 'a' y 'b 'usando la función, swap (& a, & b).
Figura 04: Salida del programa de intercambio usando punteros
En el intercambio, la función debe usar punteros porque las direcciones se pasan y esas direcciones deben mantenerse por punteros. Dentro de la función, la dirección de 'a' se copia a 'x' y la dirección de 'b' se copia a 'y'. Usando la variable temporal, se intercambian los valores 'x' e 'y'. En esta llamada por el método de referencia, los cambios dentro de la función de intercambio se reflejan en el programa principal. La impresión de los valores de 'a' y 'b' en la página principal dará los valores intercambiados. Ahora la salida de 'a' es 30 y 'b' es 20. Como la función está tomando la dirección de las variables, los cambios realizados dentro de la función afectan los valores originales.
Call By Value vs Call By Reference | |
En la llamada por valor, las copias de las variables se pasan a la función para que los cambios realizados dentro de la función no modifiquen el valor original. | En la llamada por referencia, la dirección de las variables se pasa a la función, por lo que los cambios realizados para las variables dentro de la función, modificarán el valor original. |
Modificación de valor | |
En llamada por valor, el valor original no cambia. | En llamada por referencia, los valores originales están cambiando.. |
La llamada por valor y la llamada por referencia son métodos para llamar a la función. La diferencia entre llamada por valor y llamada por referencia es que en la llamada por valor las copias de las variables se pasan a la función y en la llamada por referencia, las direcciones de las variables se pasan a la función. El uso de llamada por valor o llamada por referencia depende de la tarea a realizar.
Puede descargar la versión en PDF de este artículo y usarla para fines fuera de línea, como se indica en la nota de cita. Descargue la versión en PDF aquí Diferencia entre llamada por valor y llamada por referencia
1.Jaiswal, Haresh. "11 Call by Value vs Call by Reference". Youtube, YouTube, 24 de diciembre de 2015. Disponible aquí