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