next up previous contents index
suivant: Chaînes de caractères monter: main précédent: Des nombres premiers à   Table des matières   Index


Tableaux de dimension 1

Un tableau est un objet rassemblant un nombre donné d'objets de même type, installés consécutivement en mémoire ; ces objets, qui sont appelés les éléments du tableau, sont ses sous-objets.

Voici une définition, sans initialisation, la taille du tableau étant spécifiée entre crochets :


int t[4];

Cette définition déclare t comme un nom dont le type est << tableau de 4 int >>, puis alloue un bloc de mémoire pouvant contenir quatre int. La taille doit être une expression constante d'un type entier. Le nom t est une expression constante dont la valeur est l'adresse de ce bloc de mémoire ; le type de cette valeur est << tableau de int >> ; on notera que le type de la valeur de t est moins précis que le type de l'expression t, puisque la taille, 4, n'y figure plus. Comme t est une constante et non une variable, t ne peut pas être le membre gauche d'une affectation (l'affectation t = ... est interdite).


\begin{figurette}
% latex2html id marker 4686\begin{center}
\leavevmode
\fb...
...g/array1.eps}
} \caption {Tableau à une dimension} \end{center} \end{figurette}

Une définition, avec initialisation, est de la forme suivante (la taille du tableau peut ne pas être spécifiée dans ce cas), qui initialise le bloc alloué pour t en y écrivant les entiers 1, 2, 3, et 4 :


int t[] = {1,2,3,4};

Les éléments d'un tableau sont toujours accédés par indexation à partir de zéro16 : les quatre éléments du tableau t sont t[0], t[1], t[2] et t[3]. Ces t[$i$], et plus généralement t[exp], pour une expression arithmétique de type entier exp, désignent les éléments du tableau, donc peuvent être le membre gauche d'une affectation :


  int k = ...;
  t[k+1] = 12;

C'est une erreur d'accéder à un élément hors des bornes du tableau (par exemple t[-4], t[4]), mais cette erreur n'est pas signalée à la compilation, et peut à l'exécution, soit produire des résultats aberrants soit provoquer une erreur fatale. Signalons qu'un tableau, une fois défini, ne peut pas être redimensionné ; C++ offre dans sa bibliothèque standard des types beaucoup plus souples (notamment vector) qui permettent un redimensionnement (augmentation ou diminution de la taille).

Si les éléments du tableau doivent être traités comme des constantes, c'est-à-dire s'ils ne doivent pas figurer à gauche d'une affectation, il faut spécifier const dans la définition du tableau, qui est obligatoirement initialisé dans ce cas :


const int t[] = {1,2,3,4};
t[2] = ...;                   // ERREUR


next up previous contents index
suivant: Chaînes de caractères monter: main précédent: Des nombres premiers à   Table des matières   Index
R Lalement