Funciones a las que se pasan punteros

Cuando se llama a una función, todos los parámetros con los que la llamamos son copiados y pasados a la función. Esto significa que si la función cambia el valor de los parámetros, sólo lo hace dentro de la función. Por ejemplo: #include <iostream.h>

void change_values(int a,int b)
{
 a=4;
 b=5;

}
main() {
 int a;
 int b;

 a=1;
 b=2;

 change_values(a,b);

 cout << "A is " << a <<",B is" << b <<'\n';
}

La salida de programa es: A is 1, B is 2
La llamada a la función no ha cambiado el valor de las variables que se le han pasado. La función cambia las copias de lo que se le ha pasado. Para cambiar los valores no debemos pasar datos a la función, sino punteros a los datos. Para hacer esto, utilizamos el operador &, que da la dirección de una variable:
#include <iostream.h>

void change_values(int *a,int *b)
{
 *a=4;
 *b=5;

}
main() {
 int a;
 int b;

 a=1;
 b=2;

 change_values(&a,&b);

 cout << "A is " << a <<",B is" << b <<'\n';
}

Ahora la salida del programa es:
A is 4, B is 5
La función main pasa la dirección de a y b, por lo que a la función change_values se le pasa una copia de las direcciones. Utilizando las direcciones de a y b, la función puede acceder a los datos directamente.

Free Web Hosting