Wie wir bei malloc bereits gesehen haben, können Funktionen auch Pointer (Adressen) zurückliefern. Bei der Deklaration wird dem Rückgabetyp ein * hintangestellt, um zu verdeutlichen, daß ein Zeiger auf ein entsprechendes Objekt (statt des Objektes selbst zurückgeliefert wird.
Dabei ist zu beachten, daß man niemals die Adresse einer lokalen Variablen als Funktionsresultat zurückliefert, da der von ihr belegte Speicherplatz automatisch freigegeben wird und spätestens beim nächsten Funktionsaufruf mit anderen Werten belegt wird. Auch hier gilt: Lesen liefert unsinn, schreiben eine Katastrophe.
Hier ein (zugegeben etwas konstruiertes) Beispiel:
int * next (void) { static int vec[12]; static int index = 0; if (index >= 12) index -= 12; return &vec[index++] }