next up previous contents index
Nächste Seite: 7.3 Rückgabewerte von Funktionen Aufwärts: 7. Funktionen Vorherige Seite: 7.1 Definition und Deklaration   Inhalt   Index


7.2 Parameterübergabe

Beim Programmentwurf unterscheiden wir drei Arten von Parametern einer Funktion:
INPUT
Parameterdaten werden in der Funktion benutzt aber nicht verändert, d.h., sie sind innerhalb der Funktion konstant.
INOUT
Parameterdaten werden in der Funktion benutzt und verändert.
OUTPUT
Parameterdaten werden in der Funktion initialisiert und gegebenenfalls verändert.
Wir werden programmtechnisch nicht zwischen INOUT- und OUTPUT-Parametern unterscheiden. Es gibt generell drei Möglichkeiten (siehe Ex721.cc) der programmtechnischen Übergabe von Parametern
  1. Übergabe der Daten einer Variablen (engl.: by value).
  2. Übergabe der Adresse einer Variablen (engl.: by address)
  3. Übergabe der Referenz auf eine Variable (engl.: by reference), wobei hierbei versteckt eine Adresse übergeben wird.
Wir betrachten die Möglichkeiten der Parameterübergabe am Beispiel der sgn Funktion mit der Variablen double a .


      Effekt von    
Übergabeart Parameterliste Aufruf x++ (*x)++ Verwendung Empfehlung
  double x   intern -- INPUT [C]
by value const double x sgn(a) nicht erlaubt -- INPUT C [einfache Datentypen]
  double* x   intern intern/extern INOUT C
by address const double* x sgn(&a) intern nicht erlaubt INPUT C [komplexe Datentypen]
  double* const x   nicht erlaubt intern/extern INOUT [C]
  double& x   intern/extern -- INOUT C++
by reference const double& x sgn(a) nicht erlaubt -- INPUT C++


Die ''by-reference''-Variante double &const x wird vom Compiler abgelehnt und die ''by-address''-Variante const double* const x , d.h., Zeiger und Daten dürfen lokal nicht verändert werden, ist praktisch bedeutungslos. Bemerkung:

Wenn eine Variable in der Funktion als Konstante benützt wird, dann sollte sie auch so behandelt werden, d.h., reine INPUT-Parameter sollten stets als const in der Parameterliste gekennzeichnet werden. Dies erhöht die Sicherheit vor einer unbeabsichtigten Datenmanipulation.
next up previous contents index
Nächste Seite: 7.3 Rückgabewerte von Funktionen Aufwärts: 7. Funktionen Vorherige Seite: 7.1 Definition und Deklaration   Inhalt   Index
Gundolf Haase 2004-01-15