Next: Les instructions itératives
Up: Les tableaux
Previous: Les tableaux
Sous-sections
Pour déclarer un tableau dont les éléments ont un type de base :
- -
- partir de la déclaration de variable ayant un type de base ;
- -
- ajouter entre crochets le nombre d'éléments du tableau après le nom.
Exemple :
int t[10]; /* t tableau de 10 int */
long int t1[10], t2[20]; /* t1 tableau de 10 long int,
t2 tableau de 20 long int */
En pratique, il est recommandé de toujours donner un nom à la constante qui
indique le nombre d'éléments d'un tableau. Exemple :
#define N 100
int t[N];
Les points importants sont les suivants :
- -
- les index des éléments d'un tableau vont de 0 à N - 1 ;
- -
- la taille d'un tableau doit être connue statiquement par le compilateur.
Impossible donc d'écrire :
int t[n];
où
n
serait une variable.
Initialisation d'un tableau
Il est possible d'initialiser un tableau avec une liste d'expressions
constantes séparées par des virgules, et entourée des signes
{
et
}
. Exemple :
#define N 5
int t[N] = {1, 2, 3, 4, 5};
On peut donner moins d'expressions constantes que le tableau ne
comporte d'éléments.
Dans ce cas, les premiers éléments du tableau
seront initialisés avec les valeurs indiquées, les autres seront
initialisés à zéro. Exemple :
#define N 10
int t[N] = {1, 2};
Les éléments d'indice 0 et 1 seront initialisés respectivement avec les
valeurs 1 et 2, les autres éléments seront initialisés à zéro.
Il n'existe malheureusement pas de facteur de répétition, permettant
d'exprimer << initialiser n éléments avec la même valeur v >>.
Il faut soit mettre n fois la valeur v dans l'initialisateur, soit initialiser
le tableau par des instructions.
-
- Un tableau de caractères peut être initialisé par une liste de constantes
caractères. Exemple :
char ch[3] = {'a', 'b', 'c'};
C'est évidemment une méthode très lourde.
-
- Un tableau de caractères peut être initialisé par une chaîne littérale.
Exemple :
char ch[8] = "exemple";
On se rappelle que le compilateur complète toute chaîne littérale avec un
caractère null, il faut donc que le tableau ait au moins un élément de
plus que le nombre de caractères de la chaîne littérale.
-
- Il est admissible que la taille déclarée pour le tableau soit supérieure
à la taille de la chaîne littérale. Exemple :
char ch[100] = "exemple";
dans ce cas, seuls les 8 premiers caractères de ch seront initialisés.
-
- Il est également possible de ne pas indiquer la taille du tableau et dans
ce cas, le compilateur a le bon goût de compter le nombre de caractères de la
chaîne littérale et de donner la taille adéquate au tableau (sans oublier
le null).
Exemple :
char ch[] = "ch aura 22 caractères";
-
- Il est également possible de donner au tableau une taille égale au nombre
de caractères de la chaîne. Dans ce cas, le compilateur comprend qu'il ne faut
pas rajouter le null de la fin de chaîne. Exemple :
char ville[8] = "bordeaux";
-
- Syntaxe :
Dans sa forme la plus simple, une référence à un élément de tableau
a la syntaxe suivante :
expression :
nom-de-tableau [ expression1 ]
-
- Sémantique :
expression1 doit délivrer une valeur entière, et
l'expression délivre l'élément d'indice expression1
du tableau.
Une telle expression est une lvalue, on peut donc la
rencontrer aussi bien en partie gauche qu'en partie droite d'affectation.
Par exemple, dans le contexte de la déclaration :
#define N 10
int t[N];
on peut écrire :
x = t[i]; /* référence à l'élément d'indice i du tableau t */
t[i+j] = k; /* affectation de l'élément d'indice i+j du tableau t */
Le langage C fait la distinction entre tableau de caractères et chaîne de
caractères : une chaîne de caractères est un tableau de caractères dont la
fin est indiquée par un caractère
null.
C'est une convention très pratique exploitée par la bibliothèque standard.
Next: Les instructions itératives
Up: Les tableaux
Previous: Les tableaux
Bernard Cassagne
1998-12-09