Leçon 32 : Passage de tableaux aux fonctions
Lorsqu'un nom de tableau est passé à une fonction, le C utilise concrètement le Passage par référence (ou, plus précisément, le passage par pointeur).
Qu'est-ce qui est transmis ?
Lorsque vous passez le nom d'un tableau (ex: mon_tableau), le C le traite comme un pointeur vers son premier élément. La fonction reçoit l'adresse mémoire du début du tableau.
Comme la fonction reçoit l'adresse, toute modification apportée aux éléments du tableau à l'intérieur de la fonction affectera le tableau d'origine à l'extérieur.
Syntaxe de définition de fonction
Lors de la déclaration du paramètre, vous devez spécifier le type, mais la taille est optionnelle (et généralement omise).
c // Les trois prototypes ci-dessous sont équivalents en tant que paramètres : void afficher_tableau(int arr[], int taille); void afficher_tableau(int arr[10], int taille); // La taille est ignorée par le compilateur void afficher_tableau(int *arr, int taille); // La façon la plus claire de montrer que c'est un pointeur
Exemple : Modifier un tableau
c #include <stdio.h>
void doubler_elements(int arr[], int n) { for (int i = 0; i < n; i++) { arr[i] *= 2; // Le tableau d'origine est modifié } }
int main() { int donnees[3] = {1, 2, 3};
// Passage du nom du tableau (adresse) et de la taille
doubler_elements(donnees, 3);
printf("Nouvelles données : %d, %d, %d\n", donnees[0], donnees[1], donnees[2]);
// Résultat : 2, 4, 6
return 0;
}
Point crucial : Étant donné que la fonction « perd » l'information sur la taille du tableau lorsqu'elle reçoit le pointeur, vous devez presque toujours passer la taille en tant qu'argument entier distinct.