Programmer en langage C
134
© Éditions Eyrolles
Voici un schéma récapitulant ce que nous venons de dire.
type int [4] *
type int *
__
t ------->|__|<------- &t[0][0] ou t[0]
|__|
|__|<------- &t[0][2]
|__|
t+1 ------->|__|<------- &t[1][0] ou t[1]
|__|
|__|
|__|
t+2 ------->|__|<------ &t[2][0] ou t[2]
|__|
|__|
|__|
t[1] est une constante ; ce n’est pas une lvalue. L’expression :
t[1]++
est invalide. Par contre, t[1][2] est bien une lvalue.
7 Les opérateurs réalisables sur des pointeurs
Nous avons déjà vu ce qu’étaient la somme ou la différence d’un pointeur et d’une valeur
entière. Nous allons examiner ici les autres opérations réalisables avec des pointeurs.
7.1 La comparaison de pointeurs
Il ne faut pas oublier qu’en C un pointeur est défini à la fois par une adresse en mémoire et par
un type. On ne pourra donc comparer que des pointeurs de même type. Par exemple, voici,
en parallèle, deux suites d’instructions réalisant la même action : mise à 1 des 10 éléments du
tableau t :
int t[10] ;
int t[10] ;
int * p ;
int i ;
for (p=t ; p for (i=0 ; i<10 ; i++)
*p = 1 ;
t[i] = 1 ;
Delannoy Livre.book Page 134 Mercredi, 6. mai 2009 4:26 16
Précédent

- 147/281

Suivant