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

Quiz

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

Vérifier Bravo ! Si les tableaux étaient copiés à chaque appel de fonction, les gros tableaux poseraient un problème de performances. Essaie encore ...

Le tableau tab passé en argument ...

void fct(int tab[]);
Vérifier Bravo ! En réalité, c'est le l'adresse mémoire du tableau (le pointeur) qui est passé à la fonction. Avec l'adresse, il est possible de lire et d'écrire et de lire dans les tableaux. Essaie encore ...

Le tableau tab passé en argument ...

void fct(const int tab[]);
Vérifier Bravo ! Le mot-clé const spécifie que le tableau ne doit pas être modifié par la fonction. Essaie encore ...

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

Vérifier Bravo ! Il y a plusieurs solution pour récupére la taille d'un tableau dans une fonction. Essaie encore ...

Le mot-clé const ...

Vérifier Bravo ! Le mot-clé const donne une information supplémentaire à l'utilisateur d'une fonction. Essaie encore ...

Voir aussi


Dernière mise à jour : 09/11/2023