En ce qui concerne les tableaux par contre, on passe à la procédure l'adresse du premier élément du tableau. La procédure pourra donc modifier si elle le désire les éléments du tableau.
Il semble donc que le passage de tableau en paramètre se fasse par adresse et non par valeur et qu'il s'agisse d'une exception à la règle qui affirme qu'en C, tout passage de paramètre se fait par valeur. Mais il n'en est rien : c'est la conversion automatique des identificateurs de type tableau qui provoque ce phénomène.
Du point de vue pratique, on retiendra que l'on peut modifier les éléments d'un tableau passé en paramètre. On peut écrire par exemple :
/* incr_tab fait + 1 sur tous les éléments du tableau t */ void incr_tab(int t[], int nb_elem) { int i; for (i = 0; i < nb_elem; i++) t[i]++; }