In questo modo modifica quella stessa variabile prova da "asd" a "prova", poichè con &prova gli hai passato l'indirizzo di memoria.
Se invece facevi modifica(char prova[]) e facevi modifica(prova) copiavi la variabile prova del main() e la passavi alla funziona come nuova variabile ma con contenuto uguale, quindi la modifica sarebbe avvenuta solo all'interno della funzione e non avrebbe modificato la variabile originale.

Spero di essere stao chiaro [/B]
Non esattamente, essendo prova un array.
Quindi anche facendo:

codice:
modifica (prova);
Gli passi lostesso l'indirizzo di quella variabile.

bye