Funkcja może również zwracać wskaźnik lub referencję. Wtedy taki wskaźnik albo referencja jest obiektem chwilowym, a nie sam obiekt, na który taki wskaźnik pokazuje.
int* f(){ int* result; ...... return result; } const int& h(int& x){ ... return x; }
Zwykle za pomocą wskaźnika lub referencji zwraca się jeden z otrzymanych argumentów, który może być użyty jako argument dla innej funkcji albo wskaźniki/referencje do obiektów utworzonych na stercie.
int& f() { int k; .... return k; // BŁĄD! zwracamy referencję do zmiennej lokalnej }