Returnwert Zeiger
<typ> *funct(...)
Etliche Funktionen, die einen Zeiger zurückliefern, schreiben ihr Ergebnis in einen C-internen Datenbereich, der bei jedem Aufruf einer solchen Funktion überschrieben wird. Weil dies eine häufige Fehlerquelle ist, wird bei Funktionen vom Datentyp Zeiger auf diesen Umstand hingewiesen.
Returnwert void *
void * funct(...)
Wenn der Funktionswert einer void *
-Funktion einer Zeigervariablen zugewiesen wird, sollte der Typ mit dem cast-Operator explizit umgewandelt werden. Beim Aufruf aus C++-Quellen ist die explizite Typumwandlung obligatorisch.
Beispiel
long *long_ptr; . . long_ptr (long *)calloc(20, sizeof(long));
Returnwert int
int
funct();
Funktionen zur Zeichenbearbeitung haben einen Returnwert vom Typ int
, da sie EOF
(=-1) zurückliefern können. Wenn die Funktion einen Returnwert vom Typ char
zurückliefert, läuft ein Programm auf einen Fehler.
Ergebnisparameter Zeiger
<typ1> funct(<typ2> *variable)
Ergebnisparameter sind Variablen, deren Inhalt durch die Funktion verändert wird. D.h., in solche Variablen speichert die Funktion ein Ergebnis ab. Ergebnisparameter sind ohne den Zusatz const
definiert.
Als Argument ist stets die Adresse, d.h. ein Zeiger, zu übergeben. Außerdem müssen Sie vor Aufruf der Funktion den Speicherplatz für das Ergebnis explizit bereitstellen.
Weil man dies häufig vergisst, wird in den jeweiligen Funktionsbeschreibungen darauf hingewiesen.
Beispiele
struct timeb tp; /* Struktur */ ftime(&tp); char erg; /* char-Variable */ scanf("%c", &erg); char array[10]; /* Zeichenketten-Variable */ scanf("%s", array);