Funktionsargumente

Was ist das?

Funktionsargumente sind Werte, die man einer Funktion „mit auf den Weg geben“ kann, um das Ergebnis der Funktion zu verändern. Funktionsargumente werden auch Parameter genannt. Einen grundlegenden Einblick in Parameter bekommt man im Kapitel Funktionen unter der Überschrift „Parameter“.

Übergabekosten

Wie bitte?

Ja, genau: Kosten. Es ist natürlich nicht „umsonst“, Argumente an eine Funktion zu übergeben. Keine Angst, es kostet natürlich kein Geld. Nun kommt die Frage auf: Was kostet es denn dann?

Um diese Frage zu beantworten, müssen wir erst einmal verstehen, was genau Parameter denn nun sind. Gibt es unterschiedliche Formen von Parametern?

Ein einfaches Beispiel:

int add(int a, int b)
{
   return (a+b);
}

Nun rufen wir unsere simple Funktion ersteinmal auf:

int nr_1 = 5;
int nr_2 = 12;
add(nr_1,nr_2);

Nun die Frage, was passiert hierbei? Hier die Antwort:

Beim Aufruf der Funktion add werden die Werte der beiden Variablen nr_1 und nr_2 an die Funktion übergeben. Dabei werden die Werte aus den Speicherstellen, die durch die Variablen definiert sind in neue, extra für die Funktion add bereitgestellte Speicherbereiche kopiert. Jawohl, kopiert. Diese Übergabe der Funktionsargumente nennt man Call by Value.

Das ist an sich genommen nichts schlimmes. Es werden dann eben (je nach Computer) 4 oder 8 Byte mehr Speicher benötigt. Es kann aber zu Problemen führen, wenn wir nicht nur 2 Integer-Variablen an eine Funktion übergeben, sondern beispielsweise ein Array von 2000 Integer-Variablen. Übergeben wir ein solches Array wie unsere beiden Variablen, dann benötigen wir bis zu 8000 Byte mehr Speicher.
Wie man dieses Problem löst, wird im nächsten Kapitel (Referenzparameter) erklärt.

Noch nicht fertig FIXME


Diskussion: http://proggen.org/viewtopic.php?f=39&t=223