Diferencia entre llamada por valor y llamada por referencia

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.

¿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ámetrosLlamar por valorLlamar por referencia
DefiniciónCuando 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.
ArgumentosEn este método, se ejecuta una copia de la variable.En este método, se ejecuta una variable en sí.
EfectoLos 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 valorNo le permite realizar cambios en las variables reales.Le permite cambiar los valores de las variables mediante llamadas a funciones.
Pasando una variableLos 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 valorEl valor original no se modificó.Se modifica el valor original.
Ubicación de la memoriaLos argumentos reales y formales se crearán en una configuración de memoria diferenteLos argumentos reales y formales se crearán en el mismo espacio de memoria.
SeguridadEn 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.
DefectoPor 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:

Ventajas de usar el método de llamada por referencia

Ventajas de usar un método de llamada por referencia:

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:

Las desventajas de usar el método de llamada por referencia

Las principales ventajas de utilizar una llamada por referencia son:

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *