Comme pour les variables, il est possible de transmettre un tableau en argument à une fonction. La syntaxe consiste à ajouter des crochets vides dans les arguments de la fonction pour lui spécifier qu'il s'agit d'un tableau et non d'une variable :
void init(int tab[], int size) {
int i=0;
for (i=0; i<size; i++) tab[i]=0;
}
Toutefois, le passage de tableaux en paramètre à des fonctions présente quelques différences avec les variables. La fonction ne reçoit pas une copie du tableau (comme pour les variables). Elle reçoit l'adresse de la première cellule du tableau. Cela a deux conséquences majeures :
Lorsqu'un tableau est passé en paramètre à une fonction, son contenu peut être
modifié par le code de la fonction. Sur l'exemple ci-dessus, on s'aperçoit que
la fonction ne retourne rien (void init()
). Elle va directement modifier le contenu du
tableau qui lui a été passé en paramètre.
size
est passé à la fonction. size
renseigne la fonction sur le nombre de cellules du tableau. Le mot-clé const
placé avant un argument indique au compilateur et à l'utilisateur
de la fonction que cet argument ne sera pas modifié par la fonction. Par exemple,
la fonction suivante affiche un tableau sans en modifier le contenu :
void affiche (const int tab[]);
Spécifier qu'un tableau n'est pas modifiable par une fonction est une bonne habitude de programmation. Cela permet à certains compilateurs de procéder à des vérifications supplémentaires lors de la compilation.
Dans les exercices suivants, nous considérerons la déclaration de la constante NB_NOTES
et des 3 tableaux suivants :
#define NB_NOTES 6
float notes1[NB_NOTES] = {10.2, 12.5, 18.5, 9.8, 13.2, 12.1};
float notes2[NB_NOTES];
float moyennes[NB_NOTES];
Écrire une fonction void affiche (const float notes[], int size)
qui affiche les notes du tableau
passé en paramètre. Testez votre fonction avec le tableau note1
:
note[0] = 10.20 note[1] = 12.50 note[2] = 18.50 note[3] = 9.80 note[4] = 13.20 note[5] = 12.10
Écrire une fonction void init(float classe[], int size, float note)
qui remplit le tableau
classe
avec la note note
. Initialiser le tableau notes2
à 10 grâce la
fonction avant de l'afficher :
note[0] = 10.00 note[1] = 10.00 note[2] = 10.00 note[3] = 10.00 note[4] = 10.00 note[5] = 10.00