C-Programmierung

Funktionsaufruf

Funktionssyntax | | Rückgabewerte von Funktionen

Beim Aufruf einer Funktion werden sämtliche aktuellen Parameterwerte an die Parametervariablen übergeben. Die aktuellen Parameterwerte bezeichnet man als Argument und die Parametervariablen kurz als Parameter.

Ein Argument ist ein Wert, ein Parameter ist eine Variable, d.h. bei jedem Funktionsaufruf wird der aktuelle Wert der Argumente evaluiert und den Parametervariablen zugewiesen. Dieses Aufrufschema ist unter dem Begriff Call-by-Value bekannt.

Beispiel:

x=rem(7+0.71, 2*0.1);

Für die Evaluation des obigen Ausdrucks, der den Aufruf der Funktion rem(double a, double b) beinhaltet, werden zuerst die Argumente evaluiert, es ergeben sich die konkreten Werte 7.71 und 0.2. Diese Werte werden bei jedem Funktionsaufruf automatisch in den Parametervariablen a=7.71 und b=0.2 gespeichert.

Das entsprechende Ergebnis der Berechnung im Funktionsrumpf für die obigen Argumentwerte ist 0.11. Dieser Wert wird mittels return(0.11) zurückgegeben und entspricht dem Evaluationswert des Gesamtausdrucks rem(7+0.71, 2*0.1).

Der Datentyp der Argumente muss mit der Deklaration der Parameter in Übereinstimmung sein, andernfalls werden die jeweiligen Datentypen implizit ineinander umgewandelt. Selbiges gilt für den zurückgegebenen Funktionswert. C bezeichnet man daher als typsicher. Die Anzahl der Argumente muss überdies mit der Zahl der Parameter übereinstimmen.

Fallgrube: Die Auswertungsreihenfolge von Funktionsargumenten ist im C-Standard nicht festgelegt. Seiteneffekte sind daher in den Funktionsargumenten verboten, zum Beispiel:

f(++x, x); /* undefined behavior */

Q Die Ausgabe von Funktionsergebnissen mit printf bei Funktionsende ist nicht sinnvoll. Wieso?

Es erhöht die Flexibilität, die Funktionsergebnisse erst als Funktionswert zurückzugeben und diese danach mit printf auszugeben.


Funktionssyntax | | Rückgabewerte von Funktionen

Options: