9.4.2 Définition d'une fonction

Icône de l'outil pédagogique Définition d'une fonction

La syntaxe générale de la définition d'une fonction est la suivante :

L’en‐tête de fonction

La première ligne est l'en‐tête de la fonction, suivie par les accolades qui encadrent le corps de la fonction. Du point de vue syntaxique, cet en‐tête est identique, au point‐virgule final près, au prototype de la fonction.

Le type de la fonction, indiqué au début de l'en‐tête avant le nom de la fonction, est le type du résultat que la fonction retourne à la fonction appelante : long/short int, char, double... Une fonction qui ne renvoie pas de résultat est de type void (vide).

Outre le nom et le type de la fonction, figure dans l'en‐tête la liste des paramètres (on dit aussi paramètres formels). Cette liste, placée entre parenthèses derrière le nom de la fonction, précise le type et le nom des variables dans lesquelles vont être mémorisées les informations fournies lors d'un appel.

Il s'agit là, dans la ligne d’en-tête de fonction, d'une définition de variables (c'est-à-dire d'une réservation en mémoire) : les paramètres formels, qui sont des variables locales un peu particulières de la fonction, sont créés (alloués) sur la ligne d'en-tête de la fonction.

L’instruction return

L'instruction return permet de préciser quelle valeur doit être retournée à la fonction appelante. Cette instruction termine l'exécution de la fonction et redonne le contrôle à la fonction appelante. Sa syntaxe est :

return expression_ou_variable ;

En théorie, l'instruction return peut figurer n'importe où dans le corps de la fonction, voire apparaître plusieurs fois. En pratique (règle de style), c'est la dernière instruction avant l'accolade fermante de la définition de fonction.

Une fonction bien écrite contient une seule instruction return, placée sur la dernière ligne de la fonction. Sauf cas particulier (la gestion d’erreur), il faut éviter les instructions return en plusieurs exemplaires, dispersées dans le code au sein d'instructions comme if-else. Voir la fonction calculer_racine de l’Exemple 48.

Le compilateur rajoute automatiquement l'instruction return à la fin du texte d'une fonction s'il ne trouve pas cette instruction ; la valeur retournée est alors indéfinie.