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 de propósito general flexible. Fue creado originalmente por Bjarne Stroustrup, una informática danesa, en 1985. C ++ admite métodos de aprobación de tres parámetros, yo.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 la llamada por mecanismo de referencia.

Que es una función?

Antes de saltar al tema real, necesitamos entender cuál es la función en c++. Muchos de ustedes ya pueden estar familiarizados con las funciones.

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

Cada programa C ++ tendrá la función "Main ()". La función "Main ()" es el punto de entrada para un programa C ++. Además de la función "main ()", el programador puede definir tantas funciones como quieran.

Aquí está la sintaxis de 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 número de 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, yo.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 entero, yo.mi. "A" y luego declaró 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 aprobación de parámetros:

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

  1. Llamar por valor / aprobar por valor
  2. Llamada por dirección / aprobación por dirección
  3. Llamar por referencia / pasar por referencia

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

¿Qué es la llamada por dirección / aprobación por dirección??

En el caso del método de llamada por dirección / aprobación por dirección, los argumentos de la función se pasan como dirección. La función de llamadas pasa la dirección de los parámetros. Las variables de puntero se utilizan en la definición de función. Con la ayuda del método de llamada 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 posterior de este artículo.

¿Qué es la llamada por referencia / Pase por referencia??

En la llamada por referencia / Pase por método de referencia, los parámetros de la función se pasan como referencia. Dentro de la definición de 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 aprobación de parámetros, veremos varios programas de ejemplo para comprender el mecanismo de aprobación de parámetros en C ++:

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

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

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

En este ejemplo, vamos a demostrar la llamada por mecanismo de dirección. Desde la función "Main ()", estamos llamando a la función "Hello ()" y aprobando la dirección de "Var". En la definición de 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 está cambiando a 200 con la ayuda del puntero. Por lo tanto, el valor de "var" se está cambiando a 200 dentro de la función "main ()" después de la llamada de la función "Hello ()".

#incluir
usando el espacio de nombres STD;
vacío hola (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;
regresar 0;

Ejemplo -2 - Llamada 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 usar 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 la persona que llama. El método de llamada por dirección se puede usar en dicho escenario. En este ejemplo, estamos pasando la dirección de la función VAR_1 (& VAR_1) y VAR_2 (& VAR_2) a la función "myswap ()". Dentro de la función "myswap ()", estamos intercambiando los valores de estas dos variables con la ayuda de los punteros. Como puede ver en la salida 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;
void 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;
cout << "Calling mySwap() function - Call by address." << 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;
regresar 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 "Hello ()", 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;
vacío hola (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;
regresar 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;
void myswap (int & vref_1, int & 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;
cout << "Calling mySwap() function - Call by reference." << 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;
regresar 0;

Conclusión

Comprender los métodos de aprobación de parámetros en C ++ es muy crucial. El lenguaje de programación C admite la llamada por valor y llamada por dirección solamente. 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. Llamado por dirección es un método muy poderoso y popular en aplicaciones de dominio integradas.