Programmer en langage C
132
© Éditions Eyrolles
6 Un nom de tableau est un pointeur constant
En langage C, l’identificateur d’un tableau, lorsqu’il est employé seul (sans indices à sa suite),
est considéré comme un pointeur (constant) sur le début du tableau. Nous allons en examiner
les conséquences en commençant par le cas des tableaux à un indice ; nous verrons en effet
que, pour les tableaux à plusieurs indices, il faudra tenir compte du type exact du pointeur en
question.
6.1 Cas des tableaux à un indice
Supposons, par exemple, que l’on effectue la déclaration suivante :
int t[10]
La notation t est alors totalement équivalente à &t[0].
L’identificateur t est considéré comme étant de type pointeur sur le type correspondant aux
éléments du tableau, c’est-à-dire, ici, int *. Ainsi, voici quelques exemples de notations
équivalentes :
t+1
&t[1]
t+i
&t[i]
t[i]
* (t+i)
Pour illustrer ces nouvelles possibilités de notation, voici plusieurs façons de placer la valeur 1
dans chacun des 10 éléments de notre tableau t :
int i ;
for (i=0 ; i<10 ; i++)
* (t+i) = 1 ;
int i ;
int * p :
for (p=t, i=0 ; i<10 ; i++, p++)
* p = 1 ;
Dans la seconde façon, nous avons dû recopier la valeur représentée par t dans un pointeur
nommé p. En effet, il ne faut pas perdre de vue que le symbole t représente une adresse
constante (t est une constante de type pointeur sur des entiers). Autrement dit, une expression
telle que t++ aurait été invalide, au même titre que, par exemple, 3++. Un nom de tableau est
un pointeur constant ; ce n’est pas une lvalue.
Delannoy Livre.book Page 132 Mercredi, 6. mai 2009 4:26 16
Précédent

- 145/281

Suivant