Funktionsaufruf

Wenn einer Name, der früher nicht beschrieben wurde, im Ausdruck erscheint, und linke runde Klammer ihm folgt, gilt der nach dem Kontext der Name einer Funktion.

Funktionsname (x1, x2,..., xn)

 

Argumente (formelle Parameter) werden nach der Bedeutung übertragen, d.h. jede Bedeutung x1, . . . , xn wird berechnet und der Wert wird der Funktion übertragen. Reihenfolge der Ausdruckberechnungen und Reihenfolge des Wertladens ist nicht garantiert. Waehrend der Durchführung wird die Pruefung der Zahl und des Typs von Argumenten durchgeführt, die der Funktion übertragen wurden. Dieses Verfahren des Funktionszugriffs heisst Wertaufruf.  

Funktionsaufruf ist Ausdruck dessen Wert der Wert ist, der von der Funktion zurückgegeben wird. Der beschriebene Funktionstyp muss dem Typ des Rückgabewertes entsprechen. Funktion kann erklärt oder beschrieben werden in jeder Programmstelle auf dem globalen Niveau, d.h. ausser anderer Funktionen.  Funktion kann nicht innerhalb der anderen Funktion erklärt oder beschrieben werden.

Beispiele:

int start()
  {
   double some_array[4]={0.3, 1.4, 2.5, 3.6};
   double a=linfunc(some_array, 10.5, 8);
   //...
  }
double linfunc(double x[], double a, double b)
  {
   return (a*x[0] + b);
  }

Beim Funktionsaufruf mit Default-Werten kann die Liste der übertragenen Parameter vor dem ersten Parameter mit Default-Wert nicht begrenzt werden.  

Beispiele:

void somefunc(double init,
              double sec=0.0001, //Default-Werte sind bestimmt 
              int level=10);  
//...
somefunc();                      // falscher Aufruf. der erste Pflichtparameter muss sein.
somefunc(3.14);                  // richtiger Aufruf
somefunc(3.14,0.0002);           // richtiger Aufruf
somefunc(3.14,0.0002,10);        // richtiger Aufruf

Beim Funktionsaufruf darf man nicht Default-Werte auslassen, auch wenn sie Default-Werte haben:

somefunc(3.14, , 10);           // falscher Aufruf -> zweiter Parameter ist ausgelassen.

Sehen Sie auch

überladen,Virtuelle Funktionen, Polymorphismus