Fantastico, ora ho capito! Ti ringrazio per la pazienza
grazie per il sito che mi hai dato, anche se con la tua spiegazione sei stato chiarissimo, comunque lo metto in preferiti e domani mi guardo bene tutta la faq 
Per conferma ho provato a fare così:
codice:
int& funzione1()
{
int* pt1 = new int;
*pt1 = 93;
cout << pt1 << endl;
return *pt1;
}
int* funzione2()
{
int* pt1 = new int;
*pt1 = 93;
cout << pt1 << endl;
return pt1;
}
int main()
{
int &var1 = funzione1();
cout << &var1 << endl;
int* var2 = funzione2();
cout << &var2 << endl;
return 0;
}
nel primo caso restituisce una referenza, e infatti i due indirizzi stampati (all'interno della funzione e nel main) sono gli stessi, mentre nel secondo caso sono diversi. Spero di aver fatto giusto e che non dipenda da qualche mio errore.
se ho capito bene il fatto che la reference restituita sia un'lvalue significa che la posso usare in questo modo? funzione1() = 93;
Ti ringrazio ancora per le risposte!