Originariamente inviato da FinalFantasy
Quindi

funzione(int *);

equivale a

funzione(int &);

?

E fare un puntatore a una funzione cosa può servire?
Le due modalita' di passaggio del parametro che hai indicato, per puntatore e per riferimento, sono funzionalmente eguali. Nel senso che in tutti e due i modi il compilatore si aspetta "l'indirizzo" di un dato e non il dato stesso.

La differenza sta all'interno della funzione. Nel primo caso dovrai usare la classica sintassi dei puntatori nell'accesso al dato, nel secondo puoi usare la sintassi piu' comune ... ovvero

codice:
void funzione1(int *a)
{
   *a=99;
}


void funzione2(int &a)
{
   a=99;
}
Con i puntatori a funzione puoi, ad esempio, realizzare una tabella di puntatori a funzione e chiamare una funzione in base all'indice della tabella. Il codice puo' "scegliere" quale parte funzione chiamare in base ad un valore numerico intero direttamente, senza usare un lungo elenco di if o un enorme switch ... e' una possibilita' molto usata dai compilatori stessi ...

In piu', e' possibile passare ad una funzione l'indirizzo di un'altra funzione da chiamare durante l'esecuzione della prima. E' la cosiddetta funzione di "callback" ...