© Éditions Eyrolles
125
chapitre n° 7
Les tableaux et les pointeurs
t[0][2]
t[1][0]
t[1][1]
t[1][2]
....
t[4][0]
t[4][1]
t[4][2]
Nous verrons que cet ordre a une incidence dans au moins trois circonstances :
●
lorsque l’on omet de préciser certaines dimensions d’un tableau,
●
lorsque l’on souhaite accéder à l’aide d’un pointeur aux différents éléments d’un tableau,
●
lorsque l’un des indices « déborde ». Suivant l’indice concerné et les valeurs qu’il prend,
il peut y avoir débordement d’indice sans sortie du tableau. Par exemple, toujours avec
notre tableau t de 5 x 3 éléments, vous voyez que la notation t[0][5] désigne en fait
l’élément t[1][2]. Par contre, la notation t[5][0] désigne un emplacement situé juste
au-delà du tableau.
Bien entendu, les différents points évoqués, dans le paragraphe 1.2, à propos des tableaux à
une dimension, restent valables dans le cas des tableaux à plusieurs dimensions.
3 Initialisation des tableaux
Comme les variables scalaires, les tableaux peuvent être, suivant leur déclaration, de classe
statique ou automatique. Les tableaux de classe statique sont, par défaut, initialisés à zéro ; les
tableaux de classe automatique ne sont pas initialisés implicitement.
Il est possible, comme on le fait pour une variable scalaire, d’initialiser (partiellement ou totalement) un tableau lors de sa déclaration. Cette fois, cependant, les valeurs fournies devront
obligatoirement être des expressions constantes, et cela quelle que soit la classe d’allocation
du tableau concerné (alors que les variables scalaires automatiques pouvaient être initialisées
avec des expressions quelconques).
Voici quelques exemples vous montrant comment initialiser un tableau.
3.1 Initialisation de tableaux à un indice
La déclaration :
int tab[5] = { 10, 20, 5, 0, 3 } ;
place les valeurs 10, 20, 5, 0 et 3 dans chacun des cinq éléments du tableau tab.
Delannoy Livre.book Page 125 Mercredi, 6. mai 2009 4:26 16
125
chapitre n° 7
Les tableaux et les pointeurs
t[0][2]
t[1][0]
t[1][1]
t[1][2]
....
t[4][0]
t[4][1]
t[4][2]
Nous verrons que cet ordre a une incidence dans au moins trois circonstances :
●
lorsque l’on omet de préciser certaines dimensions d’un tableau,
●
lorsque l’on souhaite accéder à l’aide d’un pointeur aux différents éléments d’un tableau,
●
lorsque l’un des indices « déborde ». Suivant l’indice concerné et les valeurs qu’il prend,
il peut y avoir débordement d’indice sans sortie du tableau. Par exemple, toujours avec
notre tableau t de 5 x 3 éléments, vous voyez que la notation t[0][5] désigne en fait
l’élément t[1][2]. Par contre, la notation t[5][0] désigne un emplacement situé juste
au-delà du tableau.
Bien entendu, les différents points évoqués, dans le paragraphe 1.2, à propos des tableaux à
une dimension, restent valables dans le cas des tableaux à plusieurs dimensions.
3 Initialisation des tableaux
Comme les variables scalaires, les tableaux peuvent être, suivant leur déclaration, de classe
statique ou automatique. Les tableaux de classe statique sont, par défaut, initialisés à zéro ; les
tableaux de classe automatique ne sont pas initialisés implicitement.
Il est possible, comme on le fait pour une variable scalaire, d’initialiser (partiellement ou totalement) un tableau lors de sa déclaration. Cette fois, cependant, les valeurs fournies devront
obligatoirement être des expressions constantes, et cela quelle que soit la classe d’allocation
du tableau concerné (alors que les variables scalaires automatiques pouvaient être initialisées
avec des expressions quelconques).
Voici quelques exemples vous montrant comment initialiser un tableau.
3.1 Initialisation de tableaux à un indice
La déclaration :
int tab[5] = { 10, 20, 5, 0, 3 } ;
place les valeurs 10, 20, 5, 0 et 3 dans chacun des cinq éléments du tableau tab.
Delannoy Livre.book Page 125 Mercredi, 6. mai 2009 4:26 16
