Retour au cours

Passage de tableaux aux fonctions

Langage C : de Zéro à Héros - Le Guide Complet pour Débutants

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.