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!