Accueil
Rechercher:
sur developpez.com sur les forums
Forums | Tutoriels | F.A.Q's | Participez | Hébergement | Contacts
Club Emploi Blogs   TV   Dév. Web PHP XML Python Autres 2D-3D-Jeux Sécurité Windows Linux PC Mac
Accueil Conception Java DotNET Visual Basic  C  C++ Delphi Eclipse MS-Office SQL & SGBD Oracle  4D  Business Intelligence
FORUMS C FAQs C TUTORIELS C LIVRES C COMPILATEURS C SOURCES GTK+
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
Responsable bénévole de la rubrique C : Arnaud Feltz (buchs) - Contacter par EMail :
Vos questions techniques : forum d'entraide C - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Copyright © 2000-2008 www.developpez.com - Legal informations.