IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
next up previous contents index
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.

Règle :

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].

Remarques

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 up previous contents index
Next: L'opérateur d'indexation Up: Relations entre tableaux et Previous: Relations entre tableaux et
Bernard Cassagne
1998-12-09