Chiamate di funzione

Se un nome che non è stato descritto in precedenza, appare nell'espressione ed è seguito da parentesi sinistra, viene contestualmente considerato come il nome di una funzione.

nome_funzione (x1, x2,..., xn)

 

Argomenti (parametri formali) vengono passati per valore, ad es. ogni espressione x1,..., xn viene calcolata, ed il valore viene passato alla funzione. L'ordine di calcolo delle espressioni e l'ordine di caricamento dei valori non sono garantiti. Durante l'esecuzione, il sistema controlla il numero e il tipo di argomenti passati alla funzione. Tal modo di affrontare la funzione viene chiamato una chiamata valore.

Chiamata di funzione è un'espressione, il cui valore è il valore restituito dalla funzione. Il tipo di funzione sopra descritto deve corrispondere con il tipo del valore di ritorno. La funzione può essere dichiarata o descritta in qualsiasi parte del programma a portata globale, cioè, al di fuori di altre funzioni. La funzione non può essere dichiarata o descritta all'interno di un'altra funzione.

Esempi:

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);
  }

Alla chiamata di una funzione con parametri di default, l'elenco dei parametri da passare può essere limitato, ma non prima del primo parametro predefinito.

Esempi:

void somefunc(double init,
              double sec=0.0001, //impostazione valori default
              int level=10);  
//...
somefunc();                      // Chiamata sbagliata. Il primo parametro deve essere presentato.
somefunc(3.14);                  // Chiamata corretta
somefunc(3.14,0.0002);           // Chiamata corretta
somefunc(3.14,0.0002,10);        // Chiamata corretta

Quando si chiama una funzione, non si possono saltare parametri, anche quelli con valori di default:

somefunc(3.14, , 10);           / / Chiamata sbagliata -> il secondo parametro è stato ignorato.

Vedi anche

Overload, Funzioni Virtuali, Polimorfismo