return
Anweisung
Die return
-Anweisung führt einen sofortigen Rücksprung aus einer Funktion aus. Es wird an die Stelle zurückgesprungen, an der die Funktion aufgerufen wurde. Der Ausdruck nach dem Keyword return
wird als Rückgabewert genommen.
Details
Der Rückgabewert muss nicht ein fester Wert sein, sondern kann ein beliebiger Ausdruck sein.
Wenn am Ende einer Funktion keine return
-Anweisung steht, so fügt der Compiler implizit ein return
ein, jedoch ohne Rückgabewert. Dies ist sinnvoll für Funktionen, welche mit dem Rückgabetyp void
deklariert sind. Solche Funktionen geben keinen Wert zurück und werden in anderen Sprachen Prozeduren
genannt, in C ist dieser Begriff jedoch nicht üblich.
Bei Funktionen, welche void
als Rückgabetyp definineren, ist es nicht nötig, einen Wert nach dem Keyword return
anzugeben, in C ist es aber auch nicht verboten. Der Compiler gibt jedoch eine Warnung aus: return with a value, in function returning void.
Fehlt bei einem return
der Rückgabewert, obschon die Funktion mit einem Rückgabetyp ungleich void
definiert ist, so gilt dies in C nicht als Fehler, kann aber zu falschen Ergebnissen führen:
Das Keyword return
führt in jedem Falle einen sofortigen Rücksprung aus. Kommen nach dieser Anweisung im selben Anweisungsblock weitere Anweisungen, so werden diese niemals ausgeführt. Es ist aber explizit möglich, in verschiedenen Anweisungsblöcken mehrere return
-Keywords zu benutzen, beispielsweise, um je nach Bedingung einen anderen Wert zurückzugeben.
Rückgabewerte der main
-Funktion
Auch die main
-Funktion ist eine Funktion und kann mit einem return
abgeschlossen werden. Üblicherweise wird ein Programm durch den Rückgabewert 0
beendet, wohingegen jeder Wert ungleich Null auf einen fehlerhaften Verlauf des Programmes hindeutet. In der Bibliothek stdlib
sind hierfür zwei Konstanten EXIT_SUCCESS
und EXIT_FAILURE
definiert.
Der Rückgabewert der main
Funktion ist jedoch nicht standartisiert. Systeme erwarten einen Rückgabewert, welcher den Wertebereich eines char
nicht überschreitet. Dieser Wert ist normalerweise nicht von Bedeutung, kann jedoch beim Arbeiten mit mehreren Prozessen oder Threads eine Zusatzinformation an das aufrufende Programm sein.
Wird das Programm in einem Terminal ausgeführt, so wird das Terminal nach Beendigung des Programmes mit einer Meldung wie der folgenden antworten:
Program exited with status 42