next up previous contents
Nächste Seite: Zeiger und Vektoren Aufwärts: Pointer Vorherige Seite: Zeiger als Funktionsparameter   Inhalt

Zeiger als Funktionsresultate

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++]
}



Thomas Neuhaus
2001-01-14