Professional Documents
Culture Documents
Cuando pasamos argumentos por valor lo que sucede es que se realiza una
copia de los valores que se envan a la funcin y de esta forma los valores
originales permanecen inalterados, por ejemplo, si tenemos una funcin
intercambiar( ) que recibe dos nmeros enteros y los intercambia
literalmente, es decir, el contenido de a pasa hacia b y viceversa, si se tiene
el siguiente programa:
1 #include <iostream>
2
3 using namespace std;
4
5 void intercambiar(int, int); //Protipo de la funcin para intercambiar los valores
6
7 int main(void)
8 {
9 int a = 2,b = 3;
10 cout<<"Valores originales a = "<<a<<" y b = "<<b<<endl<<endl;
11 intercambiar(a,b); //Llmado a la funcin intercambiar
12 cout<<"Luego de la funcion a = "<<a<<" y b = "<<b<<endl<<endl;
13
14 return 0;
15 }
16
17 void intercambiar(int i, int j)
18 {
19 int z;
20 z = i;
21 i = j;
22 j = z;
23 }
Para pasar valores por referencia a una funcin, solo se debe anteponer el
smbolo &(ampersand) en el nombre de la variable que ser la referencia de
las variables originales, es decir, el prototipo de la nueva funcin
intercambiar( ) que ahora trabaja con referencias, ser:
void intercambiar(int &i , int &j ); //Protipo de la funcin para intercambiar los
1
valores
Luego si solo agregamos este operador (el & se conoce tambin como
operador de referencia), al programa anterior tal como se muestra a
continuacin, el uso de las variables ser comn y corriente, sin embargo
cualquier cambio que se realice en ellas afectar directamente a las
variables en el programa principal (funcin main( )), si compilamos y
ejecutamos el siguiente cdigo:
1 #include <iostream>
2
3 using namespace std;
4
5 void intercambiar(int &i , int &j ); //Protipo de la funcin para intercambiar los valores
6
7 int main(void)
8 {
9 int a = 2,b = 3;
10 cout<<"Valores originales a = "<<a<<" y b = "<<b<<endl<<endl;
11 intercambiar(a,b); //Llmado a la funcin intercambiar
12 cout<<"Luego de la funcion a = "<<a<<" y b = "<<b<<endl<<endl;
13
14 return 0;
15 }
16
17 void intercambiar(int &i, int &j)
18 {
19 int z;
20 z = i;
21 i = j;
22 j = z;
23 }
Al ejecutar el cdigo, se obtiene en pantalla el siguiente resultado: