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
- Übergabe der Daten einer Variablen (engl.: by value).
- Übergabe der Adresse einer Variablen (engl.: by address)
- Ü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.
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