Concepto
Cuando se pasa un parámetro por referencia, se le da a la función acceso directo a la variable original en lugar de a una copia de ella. Esto significa que cualquier cambio realizado en el parámetro dentro de la función afectará a la variable original.
La sintaxis para pasar parámetros por referencia es la siguiente:
tipoDeRetorno nombreFuncion(tipo &var1, tipo &var2){
// Código
}
Aquí, el símbolo & indica que el parámetro se pasa por referencia, lo que significa que la función recibirá la dirección de memoria de la variable en lugar de una copia del valor.
Ejemplo Práctico
A continuación se muestra un ejemplo que ilustra cómo se utiliza el paso de parámetros por referencia:
#include <iostream>
#include <conio.h>
using namespace std;
// Prototipo de la función que usa parámetros por referencia
void valNuevo(int &, int &);
int main() {
int num1, num2;
// Solicitar al usuario que ingrese dos números
cout << "Digite dos numeros: " << endl;
cin >> num1 >> num2;
// Llamada a la función que modifica los valores
valNuevo(num1, num2);
// Mostrar los valores modificados
cout << "El valor del primer numero es: " << num1 << endl;
cout << "El valor del segundo numero es: " << num2 << endl;
getch(); // Espera a que el usuario presione una tecla
return 0;
}
// Definición de la función que modifica los parámetros por referencia
void valNuevo(int &num1, int &num2) {
// Mostrar los valores originales recibidos
cout << "El valor del primer numero es: " << num1 << endl;
cout << "El valor del segundo numero es: " << num2 << endl;
// Modificar los valores de las variables originales
num1 = 100;
num2 = 72;
}
Explicación del Código
Definición de la Función
valNuevo:- La función
valNuevorecibe dos parámetros por referencia (num1ynum2). Esto significa quenum1ynum2en la funciónvalNuevoson en realidad referencias a las variables originales pasadas desde la funciónmain.
- La función
Modificación de Valores:
- Dentro de
valNuevo, se muestran los valores originales denum1ynum2. Luego, se modifican estos valores (num1se cambia a 100 ynum2se cambia a 72). Dado que estos parámetros son referencias, las modificaciones afectan directamente a las variables enmain.
- Dentro de
Mostrar Resultados:
- Después de la llamada a
valNuevo, el programa muestra los valores denum1ynum2en la funciónmain. Como resultado, los valores modificados envalNuevotambién se reflejan enmain.
- Después de la llamada a
Ventajas del Paso de Parámetros por Referencia
- Eficiencia: Evita la necesidad de hacer copias de grandes estructuras de datos, lo que puede mejorar el rendimiento.
- Modificación Directa: Permite a las funciones modificar las variables originales, lo que puede ser útil en ciertos casos.
Consideraciones
- Precaución con los Cambios: Dado que las funciones pueden modificar las variables originales, es importante tener cuidado para no introducir errores inesperados.
- Uso en Funciones: El paso por referencia es especialmente útil en funciones que necesitan modificar múltiples valores o cuando se trabajan con estructuras de datos grandes.
Devolver valores múltiples
Aquí tienes una versión mejorada del apunte sobre cómo devolver múltiples valores desde una función en C++ usando el paso de parámetros por referencia. He incluido una explicación más detallada y algunos comentarios adicionales para aclarar el concepto.
Devolver Valores Múltiples en C++
En C++, las funciones tradicionalmente devuelven un único valor. Sin embargo, es posible devolver múltiples valores utilizando el paso de parámetros por referencia. En este enfoque, se pasa la dirección de memoria de las variables a la función, permitiéndole modificar directamente esas variables y devolver múltiples resultados.
Sintaxis
Para devolver múltiples valores, se definen los parámetros que se deben pasar por referencia en la lista de parámetros de la función. La función puede entonces modificar estos parámetros para devolver varios resultados.
Sintaxis general:
tipoDeRetorno nombre(tipoDeDato, tipoDeDato, tipoDeDato&, tipoDeDato&);
Aquí, tipoDeDato& indica que los parámetros son pasados por referencia, permitiendo que la función modifique los valores originales.
Ejemplo Práctico
A continuación se presenta un ejemplo que muestra cómo devolver la suma y el producto de dos números utilizando el paso de parámetros por referencia:
// Devolver valores múltiples
// Cálculo de la suma y el producto de dos números
#include <iostream>
#include <conio.h>
using namespace std;
// Prototipo de la función
void calcular(int, int, int &, int &);
int main() {
int num1, num2, suma, producto;
// Solicitar al usuario que ingrese dos números
cout << "Digite dos numeros: " << endl;
cin >> num1 >> num2;
// Llamada a la función que calcula la suma y el producto
calcular(num1, num2, suma, producto);
// Mostrar los resultados
cout << "El valor de la suma es: " << suma << endl;
cout << "El valor del producto es: " << producto << endl;
getch(); // Espera a que el usuario presione una tecla
return 0;
}
// Definición de la función que calcula la suma y el producto
void calcular(int num1, int num2, int &suma, int &producto) {
// Calcular la suma y el producto
suma = num1 + num2;
producto = num1 * num2;
}
Digite dos numeros:
5
6
El valor de la suma es: 11
El valor del producto es: 30
--------------------------------
Process exited after 24.8 seconds with return value 0
Presione una tecla para continuar . . .
Explicación del Código
Definición de la Función
calcular:- La función
calcularrecibe dos parámetros por valor (num1ynum2) y dos parámetros por referencia (sumayproducto). - Calcula la suma y el producto de
num1ynum2, y almacena los resultados en las variablessumayproducto, respectivamente.
- La función
Llamada a la Función:
- En la función
main, se solicitan dos números al usuario y se pasan a la funcióncalcular. - La función
calcularmodifica las variablessumayproductodirectamente, utilizando la referencia.
- En la función
Mostrar Resultados:
- Después de la llamada a
calcular, se muestran los resultados de la suma y el producto, que han sido modificados directamente en la funcióncalcular.
- Después de la llamada a
Ventajas del Uso de Parámetros por Referencia para Devolver Múltiples Valores
- Eficiencia: Evita la necesidad de usar estructuras adicionales para devolver varios valores.
- Simplicidad: Permite que una función devuelva múltiples resultados de manera directa y sencilla.
Consideraciones
- Precaución con los Cambios: Al utilizar parámetros por referencia, es importante ser consciente de que la función puede modificar las variables originales. Asegúrate de que esto sea lo que se desea antes de implementar esta técnica.
- Uso en Funciones: Este método es útil cuando se necesitan devolver más de un resultado y se quiere evitar la sobrecarga de retornar una estructura compleja o usar punteros.