Modification des éléments d'un tableau passé en paramètre

Lorsqu'on passe un paramètre effectif à une procédure ou une fonction, on a vu que l'on passait une valeur. Il est donc impossible à une procédure de modifier la valeur d'une variable passée en paramètre.

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



Matthieu Moy 2017-02-08