En los lenguajes de programación, las funciones se pueden invocar de dos formas: llamada por valor y llamada por referencia.
En este tutorial, aprenderá,
¿Qué es el método Call by Value?
El método de llamada copia un valor de argumento en el parámetro formal de esa función. Por lo tanto, los cambios realizados en el parámetro de la función principal no afectan el argumento.
En este método de paso de parámetros, los valores de los parámetros reales se copian de acuerdo con los parámetros formales de la función y los parámetros se almacenan en diferentes ubicaciones de memoria. Por lo tanto, cualquier cambio realizado dentro de las funciones no se refleja en el parámetro de llamada real.
EFECTO CLAVE
- En el modo de llamada al valor, el valor original no se cambia, pero en el modo de llamada por referencia, se cambia el valor original.
- En una llamada por valor, se ejecuta una copia de la variable, pero una llamada en sí se ejecuta por referencia.
- En Llamar por valor, los argumentos reales y formales se crearán en diferentes ubicaciones de memoria, pero en Llamar por referencia, los argumentos reales y formales se crearán en el mismo espacio de memoria.
- La llamada por valor es el método predeterminado en lenguajes de programación como C ++, PHP, Visual Basic .NET y C #, pero la llamada solo se admite por referencia a un lenguaje Java.
- Llamada por valor, las variables se ejecutan mediante un método simple, pero la referencia requiere solicitudes para almacenar la dirección de las variables.
¿Qué es el método Call by Reference?
El modo de llamada al enviar un argumento hace una copia de la dirección de un argumento en el parámetro formal. En este método, la dirección se usa para acceder al argumento real usado en la llamada a la función. Significa que los cambios realizados en el parámetro cambian el argumento de paso.
En este método, la asignación de memoria es la misma que los parámetros reales. Toda la operación en la función se realiza en el valor almacenado en la dirección de los parámetros reales, y el valor modificado se almacenará en la misma dirección.
Ejemplo de un método de llamada por valor
void main() { int a = 10, void increment(int); Cout << "before function calling" << a; increment(a); Cout << "after function calling" << a; getch(); void increment(int x) { int x = x + 1; Cout << "value is" << x; }
Producción:
before function calling 10 value is 11 after function calling 1-0
Porque la variable declarada ‘a’ en main () es diferente de la variable ‘x’ en increment (). En este programa, solo los nombres de las variables son similares, pero su dirección de memoria es diferente y se almacena en diferentes ubicaciones de memoria.
Ejemplo de método de llamada por referencia
Public static void(string args[]) { int a = 10; System.out.println("Before call Value of a = ", a); Void increment(); System.out.println("After call Value of a = ", a); } Void increment(int x) { int x = x + 1; }
Producción:
Before call Value of a =10 After call Value of a =11
Porque la variable declarada ‘a’ en se refiere principalmente a / se refiere a la variable ‘a’ (). Un nombre de variable es diferente aquí, pero ambos puntos se refieren / se refieren a las mismas ubicaciones de direcciones de memoria.
Llamar por valor vs Llamar por referencia
Parámetros | Llamar por valor | Llamar por referencia |
---|---|---|
Definición | Cuando llama a una función, cuando pasa valores copiando variables, se llama «Valores de llamada». | Al llamar a una función, en un lenguaje de programación en lugar de copiar los valores de las variables, la dirección de las variables se llama «Llamada a referencias. |
Argumentos | En este método, se ejecuta una copia de la variable. | En este método, se ejecuta una variable en sí. |
Efecto | Los cambios realizados en una copia de variable nunca cambian el valor de la variable fuera de la función. | Un cambio en la variable afecta el valor de la variable fuera de función. |
Cambio de valor | No le permite realizar cambios en las variables reales. | Le permite cambiar los valores de las variables mediante llamadas a funciones. |
Pasando una variable | Los valores de las variables se ejecutan mediante un método simple. | Se requieren variables de puntero para almacenar la dirección de las variables. |
Modificación de valor | El valor original no se modificó. | Se modifica el valor original. |
Ubicación de la memoria | Los argumentos reales y formales se crearán en una configuración de memoria diferente | Los argumentos reales y formales se crearán en el mismo espacio de memoria. |
Seguridad | En realidad, los argumentos permanecen seguros porque no pueden modificarse por accidente. | Los argumentos no son realmente seguros. Pueden modificarse accidentalmente, por lo que debe manejar las operaciones de los argumentos con cuidado. |
Defecto | Por defecto en muchos lenguajes de programación como C ++. PHP. Visual Basic .NET y C #. | Es compatible con la mayoría de lenguajes de programación como JAVA, pero no de forma predeterminada. |
Ventajas de usar el método de llamada por valor
Ventajas / beneficios del método de llamada por valor:
- El método no cambia la variable original, por lo que está conservando datos.
- Siempre que se aplique, nunca afecte el contenido real de los argumentos reales.
- El valor de los argumentos reales pasa a los argumentos formales, por lo que cualquier cambio realizado en el argumento formal no afecta los casos reales.
Ventajas de usar el método de llamada por referencia
Ventajas de usar un método de llamada por referencia:
- La función puede cambiar el valor del argumento, lo cual es bastante útil.
- No crea datos duplicados para mantener un valor único, lo que le ayuda a ahorrar espacio en la memoria.
- En este método, no se realiza ninguna copia del argumento. Por lo tanto, se procesa muy rápidamente.
- Te ayuda a evitar cambios cometidos por error.
- Una persona que lee el código nunca sabe que el valor se puede modificar en la función.
Las desventajas de usar el método de llamada por valor
Las siguientes son las principales desventajas / desventajas de un método de llamada basado en valores:
- Los cambios en los parámetros reales de las variables correspondientes pueden modificar los argumentos.
- En este método, los argumentos deben ser variables.
- No puede cambiar directamente una variable en un cuerpo funcional.
- El argumento puede en algún momento convertirse en expresiones complejas
- Se crean dos copias para la misma variable que no es eficiente en memoria.
Las desventajas de usar el método de llamada por referencia
Las principales ventajas de utilizar una llamada por referencia son:
- Fuerte garantía no nula. Una función que toma una referencia debe asegurarse de que la entrada no sea nula. Por lo tanto, no es necesario realizar una verificación nula.
- Si lo hace por referencia, la función no es teóricamente pura.
- Una garantía de por vida con referencias es un gran problema. Esto es especialmente peligroso cuando se trabaja con lambdas y programas de subprocesos múltiples.