Ciao Mewster,
In effetti passare 'a' per indirizzo è inutile perchè 'a' non viene modificato nella funzione. Il fatto di restituire un int& serve solo se lo vuoi assegnare ad un int& altrimenti se lo assegni ad un int puoi scrivere cosi:
int f(int a, int* p)
{
*p = a;
return *(p + 1);
}
...
int h = 3;
int k[2] = { 5, 7 };
int n = f(h, k);
alla fine k[0]=3 e n=7;
Se incece vuoi assegnare il risultato a un int& allora:
int& f(int a, int* p)
{
*p = a;
return *(p + 1);
}
...
int h = 3;
int k[2] = { 5, 7 };
int& n = f(a, b);
n = 100;
alla fine k[0]=3 e k[1]=100
Puoi fare una cosa simile usando i puntatori.