Tableaux sans dimension

La longueur du tableau doit toujours être une constante, jamais une quantité susceptible de varier dans le programme. Cependant, il arrive que l’on ne sache pas au moment de l’écriture du programme quelle sera exactement la longueur du tableau. Par exemple, on peut avoir besoin d’un tableau de taille n, où n est une variable entière susceptible de prendre n’importe quelle valeur a priori. Dans ce cas, si l’on doit réserver la place en mémoire, il faut utiliser des pointeurs (voir paragraphe ci-après).

Cependant, dans certains cas, on ne connaît pas la taille du tableau, mais on sait que le tableau existe déjà. C’est ce qui arrive dans un appel de fonction. Voici un exemple de fonction qui affiche les n premiers éléments d’un tableau d’entiers à l’écran, séparés par des tabulations :

void affiche_tableau(unsigned n, int tableau[])
          {
              for (int i = 0; i < n; i++)
                  cout << tableau[i] << '\t';
          }

On notera que la fonction n’a pas besoin de savoir la taille du tableau, seulement le nombre d’éléments à afficher : ce nombre peut être plus petit que la taille du tableau. On pourra par exemple n’afficher que la moitié du tableau tab défini à la section précédente :

affiche_tableau(10, tab);

Il est même possible de n’afficher que la fin du tableau, comme ceci :

affiche_tableau(10, &tab[10]);

Dans ce cas, les éléments 10 à 19 sont écrits. On note que &tab[i] signifie « adresse de l’élément i du tableau » (l’opérateur d’adressage & est détaillé avec les pointeurs, il n’a pas exactement le même sens que pour les références), et est donc formellement identique à tab, qui signifie « adresse du premier élément du tableau » . C’est la raison pour laquelle on peut le faire passer pour une variable de type int[] dans cet appel. On peut aussi écrire tab+10 dans cet exemple, grâce à l'arithmétique des pointeurs.

Exercice 3.1

Écrire une fonction qui affiche les éléments d’indices debut à fin (compris) d’un tableau d’entiers, à raison de quatre par ligne d’écran ; debut et fin sont deux entiers paramètres de la fonction.

Voir solution
Précédent Précédent Sommaire Sommaire Suivant Suivant