Developpez.com - C
X

Choisissez d'abord la catégorieensuite la rubrique :

next up previous contents index
Next: Les instructions itératives Up: Les tableaux Previous: Les tableaux

Sous-sections

Les tableaux

Déclaration de tableaux dont les éléments ont un type de base

      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];
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.

Cas particulier des tableaux de caractères

 

$\bullet$
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.

 

$\bullet$
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.

$\bullet$
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.

$\bullet$
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";

$\bullet$
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";

Référence à un élément d'un tableau

   
$\bullet$
Syntaxe :

Dans sa forme la plus simple, une référence à un élément de tableau a la syntaxe suivante :

expression :
$\Rightarrow$ nom-de-tableau [ expression1 ]

$\bullet$
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  */

Chaînes et tableaux de caractères

    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 up previous contents index
Next: Les instructions itératives Up: Les tableaux Previous: Les tableaux
Bernard Cassagne
1998-12-09
Contacter le responsable de la rubrique C