La longueur du tableau doit toujours être une constante, jamais une quantité susceptible de varier dans le programme. Cependant, il arrive que lon ne sache pas au moment de lécriture du programme quelle sera exactement la longueur du tableau. Par exemple, on peut avoir besoin dun tableau de taille n, où n est une variable entière susceptible de prendre nimporte quelle valeur a priori. Dans ce cas, si lon 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à. Cest ce qui arrive dans un appel de fonction. Voici un exemple de fonction qui affiche les n premiers éléments dun tableau dentiers à 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 na 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 nafficher que la moitié du tableau tab
défini à la section précédente :
affiche_tableau(10, tab);
Il est même possible de nafficher 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 » (lopérateur dadressage & est détaillé avec les pointeurs, il na 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 » . Cest 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 dindices |
Voir solution |
Précédent | Sommaire | Suivant |