Rappels
Généralités
Une fonction est un bloc d’instructions éventuellement paramétré par un ou plusieurs
arguments et pouvant fournir un résultat nommé souvent « valeur de retour ». On
distingue la définition d’une fonction de son utilisation, cette dernière nécessitant une
déclaration.
La définition d’une fonction se présente comme dans cet exemple :
float fexple (float x, int b, int c) // en-tête de la fonction
{ // corps de la fonction
}
L’en-tête précise le nom de la fonction (fexple) ainsi que le type et le nom (muet) de ses
différents arguments (x, b et c). Le corps est un bloc d’instructions qui définit le rôle de
la fonction.
Au sein d’une autre fonction (y compris main), on utilise cette fonction de cette façon :
float fepxle (float, int, int) ; // déclaration de fexple ("prototype")
.....
fexple (z, n, p) ; //appel fexple avec les arguments effectifs z, n et p
La déclaration d’une fonction peut être omise lorsqu’elle est connue du compilateur,
c’est-à-dire que sa définition a déjà été rencontrée dans le même fichier source.
Mode de transmission des arguments
Par défaut, les arguments sont transmis par valeur. Dans ce cas, les arguments effectifs
peuvent se présenter sous la forme d’une expression quelconque.
En faisant suivre du symbole & le type d’un argument dans l’en-tête d’une fonction (et
dans sa déclaration), on réalise une transmission par référence. Cela signifie que les
éventuelles modifications effectuées au sein de la fonction porteront sur l’argument
effectif de l’appel et non plus sur une copie. On notera qu’alors l’argument effectif doit
obligatoirement être une lvalue du même type que l’argument muet correspondant.
Toutefois, si l’argument muet est, de surcroît, déclaré avec l’attribut const, la fonction
reçoit quand même une copie de l’argument effectif correspondant, lequel peut alors
être une constante ou une expression d’un type susceptible d’être converti dans le type
attendu.
Ces possibilités de transmission par référence s’appliquent également à une valeur de
53
Précédent

- 54/398

Suivant