Parameter (Informatik)
Erscheinungsbild
Ein Parameter ist in der Informatik ein Argument in einem Unterprogramm oder Makro.
Bei der Deklaration eines Unterprogrammes in einer Programmiersprache können normalerweise Argumente als formale Parameter angegeben werden. Diese können innerhalb des Unterprogrammes anstelle der eigentlichen Parameter verwendet werden.
Beim Aufruf wird dann eine Liste mit aktuellen Parametern übergeben, die an Stelle der formalen Parameter während der Ausführungsphase verwendet werden.
Es gibt unterschiedliche Methoden, wie die aktuellen Parameter die formalen Parameter ersetzen:
- Bei Wertparametern (call by value) wird der Wert eines Ausdrucks berechnet und gegebenfalls eine Kopie des Ergebnisses erzeugt. Dieses wird an Stelle des formalen Parameters verwendet. Die aktuellen Parameter können beliebige Ausdrücke wie 2*X+1, sin(x) sein. Etwaige Änderungen Parameters im Unterprogramm werden nur in der Kopie durchgeführt und gehen bei Abschluss des Unterprogramms verloren. Grosse Datenstrukturen wie Felder werden bei der Übergabe kopiert, was unerwünscht sein kann.
- Referenzparameter (call by reference) über geben eine Referenz (normalerweise die Speicheradresse) des aktuellen Parameters. Dies ist in der Regel sehr schnell. Änderungen bleiben auch nach Abschlusse des Unterprogramms wirksam. Aktuelle Parameter können nur Ausdrücke sein, deren Adresse berechnet werden kann, also z.B. keine Konstanten.
- Namensparameter (call by name) setzen den aktuellen Wert des Parameters an Stelle des formalen Parameters während der Ausführung ein. Dies kann auch mehrfach geschehen.
- Wertergebnisparameter (call by value/return) erzeugen wie Wertparameter beim Aufruf zunächst eine Kopie des aktuellen Parameters. Bei Unterprogrammende wird der Inhalt des Parameters jedoch zurückgeschrieben.
- In einem Makro wird der formale Parameter textuell durch den aktuellen Parameter ersetzt.
Moderne, prozedurale Programmiersprachen unterstützen in der Regel Wertparameter und Referenzparameter, manchmal auch Wertergebnisparameter.