next up previous contents index
suivant: Tri d'un tableau numérique monter: main précédent: Tableaux et passage par   Table des matières   Index


Tableaux de taille inconnue à la compilation

Quand un langage n'offre pas la possibilité de réaliser une allocation dynamique17, l'usage est de définir un tableau d'une taille connue et suffisamment grande pour convenir dans la plupart des cas ; on dit qu'on réserve de la place mémoire pour ce tableau, mais on initialisera autant d'éléments de ce tableau que nécessaire, dans la limite de cette taille :


void f() {
  double t[1000];
  int n,i;

  cin >> n;
  if (n>0 && n<=1000) {
    for (i=0; i<n; i++) {
      cin >> t[i];
    } 
   } else {  
     cout << "la dimension doit être comprise entre 1 et 1000" << endl;
   }
}

C++ ne permet pas d'allouer des tableaux de taille inconnue à la compilation18, par exemple quand la taille du tableau est un paramètre de la fonction :


void f_ERREUR(int n) {
  double t[n];                 // ERREUR : interdit en C et en C++
  int i;

  for (i=0; i<n; i++) {
    cin >> t[i];
  } 
}

ou quand la taille est lue sur l'entrée standard :


  int n;
  cin >> n;
  double t[n];                // ERREUR : interdit en C et en C++
  int i;

  for (i=0; i<n; i++) {
    cin >> t[i];
  }

On verra plus loin une méthode d'allocation dynamique, sur le tas, qui permet de représenter des tableaux dont la taille n'est connue qu'à l'exécution, comme dans les deux exemples précédents.


next up previous contents index
suivant: Tri d'un tableau numérique monter: main précédent: Tableaux et passage par   Table des matières   Index
R Lalement