Il passaggio dei parametri in C/C++ puo' essere per VALORE o RIFERIMENTO.
Nel primo caso, il valore della variabile viene copiato, utilizzato all'interno della funzione chiamata e cancellato all'uscita.
Nel secondo caso il passaggio avviene per 'puntamento' dell'area di memoria di riferimento alla variabile - ovvio che non verrà cancellata-
Esempio tratto dal tuo codice:
int mia(int *a)
{
*a=*a+1;
return 0;
}
...
mia(&x);
...
Saluti,
Max