FriconiX
Des milliers de pictogrammes gratuits dessinés avec amour!

Cours 9.5. Les tableaux dans les fonctions

Passage de tableaux en argument

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 :

Le mot-clé const

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.

Exercices

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];

Exercice 1

É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

Exercice 2

Écrire une fonction init 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

Quiz

En C, un tableau passé en argument d'une fonction ...

Vérifier Bravo ! Essaie encore ...

Le tableau tab passé en argument ...

void fct(int tab[]);
Vérifier Bravo ! Essaie encore ...

Le tableau tab passé en argument ...

void fct(const int tab[]);
Vérifier Bravo ! Essaie encore ...

Comment une fonction peut connaître la taille d'un tableau ?

Vérifier Bravo ! Essaie encore ...

Le mot-clé const ...

Vérifier Bravo ! Essaie encore ...

Voir aussi


Dernière mise à jour : 08/11/2020