Côté langages
131
En C++ :
int nbElem ;
// supposée contenir le nombre d’éléments souhaités
...
float * adt ;
// adt est un «pointeur» sur des éléments de type float
adt = new float [nbElem] ;
// alloue un emplacement pour nbElem float
// et place son adresse dans adt
// on peut ensuite utiliser adt[i] comme avec un tableau statique
En toute rigueur, les tableaux dynamiques à plus d’une dimension doivent être gérés manuellement en C.
En revanche, en C++, on pourra allouer une tel tableau par une instruction telle que :
new float [nbElem1] [nbElem2]
Java, C#
Dans ces deux langages, les tableaux sont des objets particuliers qui, comme tous les objets, sont soumis
à la gestion dynamique.
int nbElem ;
// supposée contenir le nombre d’éléments souhaités
...
float t [] ;
// t est la «référence» (adresse) d’un tableau
// pour l’instant, cette référence n’a pas reçu de valeur
...
t = new int [nbElem] ; // alloue un emplacement pour nbElem entiers
// et place sa référence dans t (ici, nbElem n’a
//
pas besoin d’être une constante)
//on peut maintenant utiliser t[i] comme si t était un tableau usuel
On notera bien que le tableau référencé par t pourra varier au fil de l’exécution (mais il ne pourra s’agir que
d’un tableau d’entiers). Une « fonction » nommée length permet d’obtenir le nombre d’éléments d’un
tableau à un moment donné. Ici, t.length vaudrait nbElem.
Le débordement d’indice provoque une « exception » qui, par défaut, conduit à l’arrêt du programme. Mais
il est possible de prévoir un comportement personnalisé.
Il est possible de définir des tableaux à plusieurs dimensions, comme dans cet exemple :
int tab [] [] ; // un élément de tab se notera tab[i][j]
En fait, tab est la référence d’un tableau de références sur des tableaux d’entiers. Une conséquence
est qu’il n’est plus nécessaire que tous ces tableaux aient la même taille (avec notre image des lignes et
des colonnes, cela reviendrait à dire que, dans un tableau à deux dimensions, les lignes pourraient avoir
des longueurs différentes).
Le processus se généralise à des tableaux à plus de deux dimensions.
Précédent

- 154/370

Suivant