Next: L'opérateur d'indexation
Up: Relations entre tableaux et
Previous: Relations entre tableaux et
Sous-sections
Conversion des tableaux
Nous avons jusqu'à présent utilisé les tableaux de manière intuitive,
en nous contentant de savoir qu'on peut déclarer un tableau par une
déclaration du genre :
int t[10];
et qu'on dispose d'un opérateur d'indexation noté
[]
,
permettant d'obtenir un élément du tableau :
l'élément d'index
i du tableau
t se désigne par
t[i].
Il est temps maintenant d'exposer une caractéristique originale des
références à un tableau dans le langage C : elles subissent une conversion
automatique.
Tout identificateur de type << tableau de
X >> apparaissant dans
une expression est converti en une valeur constante dont :
- -
- le type est << pointeur vers X >> ;
- -
- la valeur est l'adresse du premier élément du tableau.
Cette conversion n'a lieu que pour un identificateur de type
<< tableau de X >> apparaissant dans une expression.
En particulier, elle n'a pas lieu lors de la déclaration.
Quand on déclare int T[10]
, le compilateur mémorise que T
est de type << tableau de 10 int >> et réserve de la place en mémoire pour
10 entiers.
C'est lors de toute utilisation ultérieure de l'identificateur T,
que cette occurrence de T sera convertie en type int *
, de
valeur adresse de T[0]
.
- 1.
- La conversion automatique d'un identificateur ayant le type tableau
empêche de désigner un tableau en entier, c'est pour cette
raison que l'opérateur d'affectation ne peut affecter un tableau à un autre
tableau :
int t1[10];
int t2[10];
t1 = t2; /* le compilateur rejettera cette instruction */
Un telle affectation ne peut se réaliser qu'à l'aide d'une procédure qui
réalisera l'affectation élément par élément.
- 2.
- Un identificateur ayant le type tableau est converti en une valeur
constante, on ne peut donc rien lui affecter :
int *p;
int t[10];
t = p; /* interdit */
p = t; /* valide */
L'existence des conversions sur les références aux tableaux va avoir deux
conséquences importantes : la
première concerne l'opérateur d'indexation et la seconde le passage de
tableaux en paramètre.
Next: L'opérateur d'indexation
Up: Relations entre tableaux et
Previous: Relations entre tableaux et
Bernard Cassagne
1998-12-09