Next: Interdiction de modification des
Up: Relations entre tableaux et
Previous: Passage de tableau en
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]++;
}
Bernard Cassagne
1998-12-09