Existen varias formas en las que se pueden enviar datos (o variables) como argumento a una función. Dos de los más comunes son Pasar por valor y Pasar por referencia. Pasar por referencia permite que una función modifique una variable sin crear una copia. Tenemos que declarar variables de referencia. La ubicación de memoria de la variable y el parámetro pasados es la misma. Por lo tanto, cualquier cambio en el parámetro también se refleja en la variable dentro de su función principal. Este artículo se centra en discutir cómo pasar variables por referencia en C++.
¿Qué es un pase por referencia?
Cuando una variable se pasa como referencia a una función, la dirección de la variable se almacena en una variable de puntero dentro de la función. Por lo tanto, la variable dentro de la función es un alias de la variable pasada. Por lo tanto, cualquier operación realizada en la variable dentro de la función también se reflejará en la función que llama.
- Esta capacidad de reflejar cambios podría devolver más de un valor por función.
- Además, una función nula técnicamente podría devolver valores utilizando este método.
El & El operador (dirección de) denota valores pasados mediante paso por referencia en una función. A continuación se muestra el programa C++ para implementar el paso por referencia:
C++
// C++ program to implement> // pass-by-reference> #include> using> namespace> std;> > void> f(>int> & x)> {> >x--;> }> > // Driver code> int> main()> {> >int> a = 5;> >cout << a << endl;> >f(a);> >cout << a << endl;> }> |
>
>Producción
5 4>
Explicación:
- En primer lugar, una función se define con el tipo de datos devuelto void y toma el valor por referencia (como lo indica el & inicio de sesión de dirección en los parámetros formales).
- La función disminuye el valor de su parámetro formal en 1.
- Después de lo cual, dentro de la función principal, una variable entera llamada a se inicializa con el valor 5.
- El valor de 'a' está impreso en la consola. Se llama a la función f() y la variable se pasa como argumento.
- Dentro de la función, el valor de la variable se reduce en 1.
- Al regresar de la función, se vuelve a mostrar el valor de la variable, que resultó ser 1 menos que el valor original.
Por lo tanto, los cambios a una variable pasada por referencia a una función se reflejan en la función que llama.
Función de intercambio usando Pass-By-Reference
La función swap intercambia los valores de las dos variables que recibe como argumentos. A continuación se muestra el programa C++ para intercambiar los valores de dos variables mediante paso por referencia.
C++
la sonrisa más hermosa del mundo
// C++ program to swap the values> // of two variables using> // pass-by-reference> #include> > // Prototype of the function> void> swap(>int> &,>int> &);> > // Driver code> int> main()> {> >int> x, y;> > >// Inputting two variables> >printf>(>'Enter the value of x and y
'>);> >scanf>(>'%d%d'>, &x, &y);> > >// Displaying their values before swapping> >printf>(>'Before Swapping
x = %d
y = %d
'>,> >x, y);> > >// Calling the function & sending variable> >// values as argument> >swap(x, y);> > >// Displaying their values after swapping> >printf>(>'After Swapping
x = %d
y = %d
'>,> >x, y);> >return> 0;> }> > // Function uses pass by reference method> // to swap passed variable values> void> swap(>int> &a,>int> &b)> {> >int> temp;> > >temp = b;> >b = a;> >a = temp;> }> |
>
>
Producción:
Explicación:
- En primer lugar se define el prototipo de la función (opcional si la función se define antes de la función principal).
- Dentro de la función principal, los valores de las dos variables se toman como entrada del usuario.
- Los valores antes de llamar a la función de intercambio están impresos en la consola.
- Después de lo cual, los valores se pasan como argumento a la función de intercambio.
- La función de intercambio utiliza llamada por referencia y contiene el código para intercambiar las dos variables.
- Al finalizar la función, el valor de las dos variables se muestra en la función principal (después de la llamada al intercambio).
- Los valores intercambiados se muestran en la pantalla.
Pasar por referencia con punteros
También es posible pasar la dirección de la variable desde la función que llama y usarla como puntero dentro de la función llamada. Esto permite un poco más explícitamente el cambio de valores de variables en la función.
A continuación se muestra el programa C++ para implementar el paso por referencia con punteros:
C++
// C++ program to implement> // pass-by-reference with> // pointers> #include> using> namespace> std;> > void> f(>int> *x)> {> >*x = *x - 1;> }> > // Driver code> int> main()> {> >int> a = 5;> >cout << a << endl;> >f(&a);> >cout << a << endl;> }> |
>
>Producción
5 4>
Explicación:
- En primer lugar, una función se define con el tipo de datos devuelto void y toma valores como punteros (como lo indica el * asterisco firmar en los parámetros formales).
- La función disminuye el valor de su parámetro formal en 1.
- Después de lo cual, dentro de la función principal, se inicializa una variable entera llamada 'a' con el valor 5.
- Entonces se muestra este valor. Se llama a la función y la dirección de la variable se pasa como argumento.
- Dentro de la función, el valor de la variable de puntero se reduce en 1.
- Al regresar de la función, se vuelve a mostrar el valor de la variable, que resultó ser 1 menos que el valor original.