A una función le puedes pasar los parámetros de dos formas, por valor o por referencia.
- Por valor: el valor del parámetro es copiado al interior de la función, lo que se haga con este valor, no modifica el valor original del parámetro con que se invoca.
-Por referencia: se le pasa a la función una referencia (dirección de la variable donde se almacena el valor), cualquier alteración de la variable de referencia en el interior de la función afecta el valor de la variable referenciada.
p.ej.(paso de parámetros por valor)
public int suma(int a, int b) {
a += b;
return a;
}
si se hace la llamada
int x = 0;
int y = 1;
int z=suma(x,y);
cout << x << "+ "<<y<<"="<<z;
imprime correctamente el valor de x, pues no se he modificado.
(paso por referencia)
public int suma(int& a,int& b) {
a+= b;
return a;
}
usando el mísmo código de la llamada anterior, verás el valor de x alterado, porque en el interior de la función se modificó debido a que el parámetro de la función, int& a, es una referencia a la variable x.