Non è la stessa cosa, come vedi nel primo caso la funzione ha come argomento due puntatori, il che equivale a dire due indirizzi di memoria. Nel chiamare la funzione ovviamente dobbiamo passare due indirizzi, infatti facciamo precedere il nome delle variabili dall'operatore "Indirizzo di...".Originariamente inviato da Hirakeydos
Una cosa non mi è chiarissima.
Somma_perIndirizzo(&a, &b) copia gli indirizzi di a,b nelle variabili locali alla funzione, mentre in Somma_perRiferimento(a, b) le variabili interne alla funzione fanno riferimento ad a,b... Nel primo caso vengono usati i puntatori a, mentre nel secondo i riferimenti a. Ma non è la stessa cosa?
Nel secondo caso la funzione ha come argomento due variabili di tipo "Riferimento" che sono un nuovo tipo di puntatore, il simbolo "&" infatti non significa più "Indirizzo di...", se postfisso alla dichiarazione di tipo esso significa "Riferimento ad un valore del tipo specificato". Nel chiamare la funzione non occorre passare due indirizzi, come si fa con i puntatori, si applicano semplicemente i nomi delle variabili da passare per riferimento.
Il tipo "Reference" è un tipo speciale di puntatore che è stato introdotto nel C++. Ora anche in qualche compilatore C (non ricordo se rientra nelle specifiche del C99).
É buona pratica adoperare i riferimenti al posto dei puntatori, fin quando se ne può fare a meno. Il motivo è che i riferimenti sono generalmente più sicuri dei puntatori.
Per maggiori approfondimenti io leggerei:
http://www.dgp.toronto.edu/~patrick/...ntersVsRef.pdf
http://www.parashift.com/c++-faq-lite/references.html