void numeros(int& entero1, float& flotante2, double& doble3);
Usamos un “ampersand” al final del tipo de dato para que su variable se convierta en un parámetro por referencia donde se usará su dirección de memoria para identificar su valor.
¿Qué tiene de especial la función Void? Entra a este Artículo:
#include <iostream>
using namespace std;
void nuevovalor(int&, int&);
int main(){
int num1 = 1, num2 = 99;
cout<<"El primer numero es: "<<num1<<endl;
cout<<"El segundo numero es: "<<num2<<endl;
nuevovalor(num1, num2);
cout<<"\nEl primer numero ahora es: "<<num1<<endl;
cout<<"El segundo numero ahora es: "<<num2<<endl;
return 0;
}
void nuevovalor(int& num1, int& num2){
int aux = 0;
aux = num1;
num1 = num2;
num2 = aux;
}
A simple vista podemos pensar que se ve como una función normal, nada característico, pero si vemos más a detalle nuestro código podemos ver como pudimos modificar dos valores y enviarlos a la función principal de una función de tipo void, algo que una función normal no podría ser capaz.
Esto pasa ya que, como se dijo, el paso de parámetros por referencia envía la dirección de memoria donde se encuentra almacenado un valor; esto quiere decir que el programa ya sabe dónde están ubicado los valores, y que cuando sean modificados por una función se reflejará en la función principal.
Un ejemplo útil del paso de parámetros por referencia es cuando queremos devolver varios valores a la función principal, ya que como sabemos, una función de tipo entero, flotante o double solo pueden devolver un solo valor.
Aunque concretamente la función no está retornando ningún valor realmente, sino que está actualizando el registro de memoria de la variable que se había declarado antes. Para devolver realmente valores múltiples en C++ (con return) se deben emplear arreglos o estructuras.