IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
next up previous contents index
Next: Passage de tableau en Up: Relations entre tableaux et Previous: Conversion des tableaux

Sous-sections

L'opérateur d'indexation

   

La sémantique de l'opérateur d'indexation consiste à dire qu'après les déclarations :

int t[N];
int i;
t[i] est équivalent à *(t + i). Vérifions que cela est bien conforme à la façon dont nous l'avons utilisé jusqu'à présent. Nous avons vu que t à pour valeur l'adresse du premier élément du tableau. D'après ce que nous savons sur l'addition entre un pointeur et un entier, nous pouvons conclure que t + i est l'adresse de l'élément de rang i du tableau. Si nous appliquons l'opérateur d'indirection à (t+i) nous obtenons l'élément de rang i du tableau, ce que nous notions jusqu'à présent t[i].

conséquence numéro 1

L'opérateur d'indexation noté [] est donc inutile, et n'a été offert que pour des raisons de lisibilité des programmes, et pour ne pas rompre avec les habitudes de programmation.

conséquence numéro 2

Puisque l'opérateur d'indexation s'applique à des valeurs de type pointeur, on va pouvoir l'appliquer à n'importe quelle valeur de type pointeur, et pas seulement aux constantes repérant des tableaux. En effet, après les déclarations :

int t[10];
int * p;
on peut écrire :
p = &t[4];
et utiliser l'opérateur d'indexation sur p, p[0] étant t[4], p[1] étant t[5], etc. p peut donc être utilisé comme un sous-tableau de t.

conséquence numéro 3

L'opérateur d'indexation est commutatif ! En effet, t[i] étant équivalent à *(t + i) et l'addition étant commutative, t[i] est équivalent à *(i + t) donc à i[t]. Lorsqu'on utilise l'opérateur d'indexation, on peut noter indifféremment l'élément de rang i d'un tableau, t[i] ou i[t]. Il est bien évident que pour des raisons de lisibilité, une telle notation doit être prohibée, et doit être considérée comme une conséquence pathologique de la définition de l'opérateur d'indexation.


next up previous contents index
Next: Passage de tableau en Up: Relations entre tableaux et Previous: Conversion des tableaux
Bernard Cassagne
1998-12-09