Vorherige Seite

Eine Ebene hoch

Nächste Seite

4.1.2 Argumente und Parameter

In dem letzten Beispiel wurde eine Funktion ohne Parameter und Rückgabewert beschrieben, was eher eine Ausnahmesituation ist. In diesem Abschnitt werden wir einer Funktion zwei Argumente übergeben.

Es soll eine Funktion mit dem Namen fill erstellt werden, mit der ein beliebiges Zeichen beliebig oft auf dem Bildschirm ausgegeben werden soll. Mit dieser Funktion können z.B. horizontale Trennstriche in einer Anwendung erzeugt werden. Der Aufruf der Funktion könnte folgendermaßen aussehen:

Die Definition (Implementierung) von fill wird wie folgt realisiert:

In der ersten Zeile wird wieder das äußere Verhalten der Funktion beschrieben. Der Name der Funktion ist fill. Das void vor dem Funktionsnamen heißt, dass kein Wert zurückgegeben wird. In den runden Klammern stehen die Parameter, die von der Funktion fill erwartet werden. Der erste Parameter ist vom Typ char und wird innerhalb der Funktion mit dem Namen Zeichen bezeichnet. Der zweite Parameter ist vom Typ int und wird mit N bezeichnet.

Die Namen der Parameter Zeichen und N haben außerhalb der Funktion keine Bedeutung. Wichtig ist nur, dass die übergebenen Argumente beim Aufruf der Funktion vom gleichen Typ wie die Parameter der Funktion sind. Z.B. wäre auch folgender Aufruf der Funktion fill möglich:

Hier wurden der Funktion fill als Argumente keine Konstanten, sondern Variablen übergeben. Die Variable ch ist vom Typ char und die Variable count ist vom Typ int, so dass die Typen dieser beiden Argumente mit den Typen der Parameter der Funktion fill übereinstimmen.

Die Aufrufargumente und die Funktionsparameter werden vom Übersetzer der Reihe nach verglichen. Die Reihenfolge muss von daher eingehalten werden. Der Aufruf fill(50, '*'); würde zu einer Fehlermeldung vom Übersetzer führen.

Beim Aufruf einer Funktion wird der Inhalt der Aufrufargumente in die Funktionsparameter kopiert. Innerhalb der Funktion wird nicht mit den Aufrufargumenten selbst, sondern nur mit der Kopie dieser Werte gearbeitet. Die Funktion fill könnte z.B. auch wie folgt realisiert werden:

Wird nun die Funktion mit fill(ch, count); aufgerufen, so bleibt die Variable count unverändert, da die interne Variable N nur eine Kopie des aufrufenden Arguments count ist.