Perché in C i parametri delle funzioni sono passati per valore, ossia quando viene chiamata la funzione viene creata una copia dei parametri, per cui i parametri di fatto risultano essere delle normali variabili locali alla funzione inizializzate con i valori passati.
Se effettui un passaggio per puntatore, invece, la copia che viene creata non è del contenuto delle variabili passate come parametri, ma del loro indirizzo, per cui la funzione, sapendo l'indirizzo a cui si trovano le variabili passate, le può modificare senza problemi.