En C todos los parametros se pasan por valor, por tanto no puedes modificar directamente nada al interior de una funcion.
Por ejemplo:
y en el main ..
Código C:
Ver originalint i = 3;
// i vale 3
f(i); // f no cambia a i, cambia a una copia de i
// i sigue valiendo 3
Lo mismo pasa con los punteros. Estas pasando punteros y quieres modificarlos, lo que en C no se puede.
Para lograrlo, pasa la direccion de memoria de ellos y recibelos en un puntero a puntero, y luego modificas lo apuntado, asi:
Código C:
Ver originalvoid f( int ** p )
{
}
main()
{
int *puntero;
f( &puntero );
}