Vorherige Seite

Eine Ebene hoch

Nächste Seite

4.1.4 Rückgabe mehrerer Werte

Vom normalen Aufbau her kann eine Funktion nur einen Wert zurückgeben. In manchen Situationen sollen aber mehr als ein Wert als Ergebnis zurückgeliefert werden. Die Parameter einer Funktion sind immer nur Kopien der Aufrufargumente (siehe Abschnitt 4.1.2), so dass die Veränderung eines Parameters die aufrufenden Argumente nicht beeinflussen kann.

Das Problem wird gelöst, indem ein Zeiger auf die zuändernde Variable übergeben wird. Auch wenn von diesem Zeiger wieder eine Kopie erstellt wird, so zeigt dieser Zeiger doch auf die selbe Stelle im Speicher, wie das Argument beim Aufruf der Funktion. Auch wenn das Thema Zeiger erst zu einem späteren Zeitpunkt behandelt wird, hier ein Beispiel:

Die Funktion swapi soll zwei Zahlen vom Typ int vertauschen. Die Definition kann wie folgt realisiert werden:

Vor dem Funktionsnamen swapi steht der Typ void, der besagt, dass kein Wert direkt zurückgegeben wird. Bei den Parametern int *a und int *b bedeuten die Sterne vor den Parameternamen, dass ein Zeiger auf den Typ int übergeben wird. Innerhalb der Funktion kann auf den Inhalt des Zeigers, also auf den Wert, auf den der Zeiger zeigt, mit einem Stern vor der Variable zugegriffen werden.

Ein Aufruf würde so aussehen:

Das kaufmännische Und vor einer Variable liefert die Speicheradresse der Variable, die hier an die Funktion swapi übergeben wird. Nach dem Aufruf hat die Variable Zahl1 den Wert 7, und die Variable Zahl2 den Wert 5.