Diferencia entre la llamada por valor y la llamada por referencia

Diferencia entre la llamada por valor y la llamada por referencia

Diferencia de clave: llamar por valor vs llamada por referencia
 

Muchos lenguajes de programación usan funciones. Una función es un conjunto de declaraciones para realizar una tarea específica. El código principal se puede dividir en varias funciones y llamarlas. Hay dos formas de llamar a una función como llamar 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. El diferencia clave entre la llamada por valor y la llamada por referencia es que, En la 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 la llamada por valor y la llamada por referencia.

CONTENIDO

1. Descripción general y diferencia de claves
2. ¿Qué es la llamada por valor?
3. ¿Qué es la llamada por referencia?
4. Similitudes entre la llamada por valor y la llamada por referencia
5. Comparación de lado a lado - Llamada por valor vs llamada por referencia en forma tabular
6. Resumen

¿Qué es la llamada por valor??

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 dos números.  Consulte el siguiente programa C escrito con el entorno de bloques de código.

Figura 01: programa para intercambiar dos números

De acuerdo con el programa que se proporciona a continuación, la variable 'A' tiene valor 20 y la variable 'B' tiene valor 30.  Al llamar a la función de intercambio (a, b), estos dos valores se pasan a la función de intercambio. En la función de intercambio, 'a' se copia en 'x' y 'b' se copia en 'y'. Ahora, 'x' está teniendo valor 20 y 'y' está teniendo valor 30.  Usando la variable temporal 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 termina la ejecución de la función de intercambio, el control regresa 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 con la función de intercambio no se reflejan en el programa principal.

Figura 02: Salida del programa de intercambio

'x' y 'y' dentro de la función de intercambio tiene 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 no pueden ser accedidos por la función principal. Para evitar este problema, se puede utilizar la llamada por referencia.

¿Qué es la llamada por referencia??

En este método, las direcciones de las variables se envían a la función. Consulte el siguiente programa C escrito con el entorno de bloques de código.

Figura 03: intercambio de dos números usando punteros

De acuerdo con el ejemplo dado a continuación, 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' utilizando la función, Swap (& A y B).

Figura 04: Salida del programa de intercambio usando punteros

En el intercambio, la función debe usar punteros porque se pasan direcciones y esas direcciones deben ser mantenidas 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 temperada, 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. Imprimir los valores de 'A' y 'B' en general 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.

¿Cuál es la similitud entre la llamada por valor y la llamada por referencia??

  • Estos dos métodos se utilizan para llamar a las funciones/métodos.

¿Cuál es la diferencia entre la llamada por valor y la llamada por referencia??

Llamada por valor vs llamada por referencia

En la llamada por valor, las copias de las variables se pasan a la función, por lo que los cambios realizados dentro de la función no modificarán 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 del valor
En llamado por valor, el valor original no está cambiando. En la llamada por referencia, los valores originales están cambiando.

Resumen - Llamada por valor vs llamada por referencia

Llamar por valor y llamada por referencia son métodos para llamar a la función. La diferencia entre la llamada por valor y la 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.  Usar llamada por valor o llamada por referencia depende de la tarea de realizar.

Descargue la versión en PDF de la llamada por valor vs llamada por referencia

Puede descargar la versión PDF de este artículo y usarla para fines fuera de línea según la nota de cita. Descargue la versión pdf aquí diferencia entre la llamada por valor y la llamada por referencia

Referencia:

1.Jaiswal, Haresh . “11 Llamada por valor vs llamada por referencia." YouTube, YouTube, 24 de diciembre. 2015. Disponible aquí