2.5 Parámetros por valor y por referencia

Dijimos antes que cuando se pasa una variable como parámetro a una función, se le pasa una copia del valor de esta variable y su valor en el programa principal no se modificará.
Si uno quisiera que la función sí modifique el valor de la variable en el programa principal, lo que se debe hacer es pasar la variable como parámetro por referencia en vez de pasarla como parámetro por valor, que es la habitual.
Para pasar parámetros por referencia, se debe colocar el signo & luego del tipo de dato en el prototipo y en el encabezado de la función.
Veamos el siguiente ejemplo:
 

#include "stdafx.h"
#include <iostream>
using namespace std;
int doble1 (int);
int doble2 (int&);

void main()
{
       int n, d1, d2;
       n = 7;
       cout<<"n vale "<<n<<endl;
       d1 = doble1(n);
       cout<<"Despues de doble1, n vale "<<n<<endl;
       d2 = doble2(n);
       cout<<"Después de doble2, n vale "<<n<<endl;
       cout<<"d1 vale "<<d1<<endl;
       cout<<"d2 vale "<<d2<<endl;
}
 
int doble1 (int n)
{
       int f;
       n = n*2;
       cout<<"En doble1, n vale "<<n<<endl;
       return n;
}
      
int doble2 (int& n)
{
       int f;
       n = n*2;
       cout<<"En doble2, n vale "<<n<<endl;
       return n;
}
      

 La variable n recibe un valor inicial de 7. Cuando se llama a doble1, la copia de n dentro de la función vale 14, pero la variable n del principal continúa valiendo 7.
Cuando se llama a la función doble2, que recibe el parámetro n por referencia, por lo tanto su valor en el programa principal será modificado.



No hay comentarios:

Publicar un comentario