C ++

C ++ llamada por dirección y llamada por referencia

C ++ llamada por dirección y llamada por referencia

C ++ es un lenguaje de programación flexible de uso general. Fue creado originalmente por Bjarne Stroustrup, un informático danés, allá por 1985. C ++ admite métodos de paso de tres parámetros, i.mi., llamar por valor, llamar por dirección y llamar por referencia. En este artículo, vamos a discutir sobre la llamada por dirección y el mecanismo de llamada por referencia.

Que es una funcion?

Antes de pasar al tema real, debemos comprender cuál es la función en C++. Es posible que muchos de ustedes ya estén familiarizados con las funciones.

Una función es básicamente un fragmento de código que se puede utilizar para realizar una determinada tarea. Una función se utiliza principalmente para reducir el código repetitivo en un programa C ++. Toma la entrada como parámetros y devuelve la salida como valor de retorno. Si definimos la función una vez, podemos llamarla / usarla varias veces en la parte posterior de nuestro programa. De esa forma, ahorramos mucho código repetitivo en el programa.

Cada programa de C ++ debe tener la función "main ()". La función "main ()" es el punto de entrada para un programa C ++. Aparte de la función "main ()", el programador puede definir tantas funciones como desee.

Aquí está la sintaxis para definir una función:

Return_type Function_Name (lista de parámetros de entrada)

La función en C ++ puede aceptar 0 o más parámetros de entrada, mientras que solo puede devolver un valor de retorno.

¿Qué es la dirección??

Hay dos tipos de variables en C ++ (similar al lenguaje C): variable de datos y variable de dirección. La variable de dirección se utiliza para almacenar la dirección de otra variable de datos. Por ejemplo, consideremos el siguiente fragmento de código:

int i = 100;
int * ptr = & i;

Aquí, la primera declaración nos dice que la variable "i" es una variable de datos y está almacenando el valor 100. En la segunda declaración, estamos declarando una variable de puntero, i.mi. "Ptr" e inicializándolo con la dirección de la variable "i".

Que es referencia?

La referencia es otra característica poderosa del lenguaje C ++. Consideremos el siguiente fragmento de código:

int a = 200;
int & r = a;

En este ejemplo, hemos declarado un número entero, i.mi. "A" y luego declara una variable de referencia "r", que se inicializa con el valor de "a". Entonces, la variable de referencia no es más que un alias de otra variable.

Métodos de paso de parámetros:

Hay tres tipos de métodos de paso de parámetros en lenguaje C ++:

  1. Llamar por valor / Pasar por valor
  2. Llamar por dirección / Pasar por dirección
  3. Llamar por referencia / Pasar por referencia

En este artículo, estamos discutiendo sobre - Llamar por dirección y Llamar por referencia.

¿Qué es Llamar por dirección / Pasar por dirección??

En el caso del método Call by address / Pass by address, los argumentos de la función se pasan como dirección. La función de llamada pasa la dirección de los parámetros. Las variables de puntero se utilizan en la definición de la función. Con la ayuda del método Llamar por dirección, la función puede acceder a los parámetros reales y modificarlos. Veremos un ejemplo del método de llamada por dirección más adelante en la sección de este artículo.

¿Qué es Llamar por referencia / Pasar por referencia??

En el método Call by reference / Pass by reference, los parámetros de la función se pasan como referencia. Dentro de la definición de la función, se accede a los parámetros reales utilizando la variable de referencia.

Ejemplos:

Ahora, dado que entendemos el concepto de métodos de paso de parámetros, veremos varios programas de ejemplo para comprender el mecanismo de paso de parámetros en C ++:

  1. Ejemplo-1 - Llamar por dirección (1)
  2. Ejemplo-2 - Llamar por dirección (2)
  3. Ejemplo-3 - Llamada por referencia (1)
  4. Ejemplo-4 - Llamada por referencia (2)

Los dos primeros ejemplos se dan para explicar cómo funciona el método Llamar por dirección en C++. Los dos últimos ejemplos son para explicar el concepto de llamada por referencia.

Ejemplo-1 - Llamar por dirección (1)

En este ejemplo, vamos a demostrar el mecanismo de llamada por dirección. Desde la función "main ()", estamos llamando a la función "hello ()" y pasando la dirección de "var". En la definición de la función, estamos recibiendo la dirección de "var" en una variable de puntero, i.mi., "pag". Dentro de la función hola, el valor de "var" se cambia a 200 con la ayuda del puntero. Por lo tanto, el valor de "var" se cambia a 200 dentro de la función "main ()" después de la llamada a la función "hello ()".

#incluir
usando el espacio de nombres std;
hola vacío (int * p)

cout << endl << "Inside hello() function : " << endl;
cout << "Value of *p = " << *p << endl;
* p = 200;
cout << "Value of *p = " << *p << endl;
cout << "Exiting hello() function." << endl;

int main ()

int var = 100;
cout << "Value of var inside main() function = " << var << endl;
hola (& var);
cout << endl << "Value of var inside main() function = " << var << endl;
return 0;

Ejemplo-2 - Llamar por dirección (2)

Este es otro ejemplo del método de llamada por dirección. En este ejemplo, vamos a explicar cómo se puede utilizar el método de llamada por dirección para resolver un problema de la vida real. Por ejemplo, queremos escribir una función para intercambiar dos variables. Si usamos el mecanismo de llamada por valor para intercambiar dos variables, las variables reales no se intercambian en la función de llamada. El método de llamada por dirección se puede utilizar en tal escenario. En este ejemplo, estamos pasando la dirección de var_1 (& var_1) y var_2 (& var_2) a la función "mySwap ()". Dentro de la función "mySwap ()", intercambiamos los valores de estas dos variables con la ayuda de los punteros. Como puede ver en el resultado a continuación, el valor real de estas variables se intercambia en la función "main ()" después de que se ejecuta la función "mySwap ()".

#incluir
usando el espacio de nombres std;
anular mySwap (int * vptr_1, int * vptr_2)

int temp_var;
temp_var = * vptr_1;
* vptr_1 = * vptr_2;
* vptr_2 = temp_var;

int main ()

int var_1 = 100;
int var_2 = 300;
cout << "Before calling mySwap() function, value of var_1 : " << var_1 << endl;
cout << "Before calling mySwap() function, value of var_2 : " << var_2 << endl << endl;
cout << "Calling mySwap() function - Call by address." << endl << endl;
mySwap (& var_1, & var_2);
cout << "After calling mySwap() function, value of var_1 : " << var_1 << endl;
cout << "After calling mySwap() function, value of var_2 : " << var_2 << endl;
return 0;

Ejemplo-3 - Llamada por referencia (1)

En este ejemplo, vamos a demostrar cómo funciona la llamada por referencia en C++. En la definición de la función "hola ()", el valor se recibe como una variable de referencia (& p). Con la ayuda de la variable de referencia (i.mi., p), podemos cambiar el valor del parámetro real (var) dentro de la función "main ()".

#incluir
usando el espacio de nombres std;
hola void (int & p)

cout << endl << "Inside hello() function : " << endl;
cout << "Value of p = " << p << endl;
p = 200;
cout << "Value of p = " << p << endl;
cout << "Exiting hello() function." << endl;

int main ()

int var = 100;
cout << "Value of var inside main() function = " << var << endl;
hola (var);
cout << endl << "Value of var inside main() function = " << var << endl;
return 0;

Ejemplo-4 - Llamada por referencia (2)

Este es otro ejemplo de una llamada por referencia. En este ejemplo, vamos a demostrar cómo funciona la llamada por referencia en C ++ con la ayuda de un ejemplo del mundo real. La función "mySwap ()" se llama desde la función "main ()" con los siguientes parámetros: var_1 y var_2. Dentro de la función "mySwap ()", estamos recibiendo los parámetros como variables de referencia.

#incluir
usando el espacio de nombres std;
anular mySwap (int y vref_1, int y vref_2)

int temp_var;
temp_var = vref_1;
vref_1 = vref_2;
vref_2 = temp_var;

int main ()

int var_1 = 100;
int var_2 = 300;
cout << "Before calling mySwap() function, value of var_1 : " << var_1 << endl;
cout << "Before calling mySwap() function, value of var_2 : " << var_2 << endl << endl;
cout << "Calling mySwap() function - Call by reference." << endl << endl;
mySwap (var_1, var_2);
cout << "After calling mySwap() function, value of var_1 : " << var_1 << endl;
cout << "After calling mySwap() function, value of var_2 : " << var_2 << endl;
return 0;

Conclusión

Comprender los métodos de paso de parámetros en C++ es muy crucial. El lenguaje de programación C solo admite la llamada por valor y la llamada por dirección. Pero, C ++ admite la llamada por referencia junto con los dos mecanismos anteriores. En este artículo, hemos visto varios ejemplos de trabajo para comprender el concepto de llamada por dirección y llamada por referencia. La llamada por dirección es un método muy poderoso y popular en aplicaciones de dominio integradas.

Las mejores distribuciones de Linux para juegos en 2021
El sistema operativo Linux ha recorrido un largo camino desde su apariencia original, simple y basada en servidor. Este sistema operativo ha mejorado ...
Cómo capturar y transmitir su sesión de juego en Linux
En el pasado, los juegos solo se consideraban un pasatiempo, pero con el tiempo la industria del juego experimentó un gran crecimiento en términos de ...
Los mejores juegos para jugar con el seguimiento de manos
Oculus Quest presentó recientemente la gran idea del seguimiento manual sin controladores. Con un número cada vez mayor de juegos y actividades que ej...