Appel de Fonction

Si un nom qui n'a pas encore été utilisé auparavant apparaît dans l'expression et est suivi par une parenthèse ouvrante, il est contextuellement considéré comme étant le nom d'une fonction.

nom_de_fonction (x1, x2,..., xn)

 

Les arguments (paramètres formels) sont passés par valeur, c'est à dire que chaque expression x1,..., xn est calculée et la valeur est passée à la fonction. L'ordre de calcul des expressions et l'ordre de chargement des valeurs n'est pas garanti. A l'exécution, le système vérifie le nombre et le type des arguments passés à la fonction. Cette façon de s'adresser à la fonction est appelée un appel par valeur.

L'appel à la fonction est une expression, dont la valeur est la valeur retournée par la fonction. Le type de fonction décrit ci-dessus doit correspondre au type de la valeur de retour. La fonction peut être déclarée ou décrite à n'importe quel endroit du programme dans la portée globale, c'est à dire en dehors des autres fonctions. La fonction ne peut pas être déclarée ou décrite à l'intérieur d'une autre fonction.

Exemples :

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

A l'appel d'une fonction avec les paramètres par défaut, la liste des paramètres à passer peut être limitée, mais pas avant le premier paramètre ayant une valeur par défaut.

Exemples :

void somefunc(double init,
              double sec=0.0001, // définit les valeurs par defaut
              int level=10);  
//...
somefunc();                      // Appel incorrect. Le premier paramètre doit être présent.
somefunc(3.14);                  // Appel correct
somefunc(3.14,0.0002);           // Appel correct
somefunc(3.14,0.0002,10);        // Appel correct

Lors de l'appel à une fonction, il n'est pas possible d'ignorer les paramètres, même ceux ayant des valeurs par défaut :

somefunc(3.14, , 10);           // Appel incorrect -> le deuxième paramètre a été oublié.

Voir aussi

Surcharge, Fonctions Virtuelles, Polymorphisme