Partager via


Déclarations de tableau

Une « déclaration de tableau » nomme le tableau et spécifie le type de ses éléments. Elle peut également définir le nombre d'éléments du tableau. Une variable de type tableau est considérée comme un pointeur vers le type des éléments du tableau.

Syntaxe

declaration:
declaration-specifiers init-declarator-listopt ;

init-declarator-list:
init-declarator
init-declarator-list , init-declarator

init-declarator :
declarator
declarator = initializer

declarator:
pointeropt direct-declarator

direct-declarator:
direct-declarator [ constant-expressionopt ]

constant-expression étant facultative, la syntaxe présente deux formes :

  • La première forme définit une variable tableau. L’argument constant-expression entre crochets spécifie le nombre d’éléments du tableau. L’argument constant-expression, s’il est présent, doit avoir un type intégral et une valeur supérieure à zéro. Le type de chaque élément est donné par type-specifier. Il peut s'agir de n'importe quel type, à l'exception de void. Un élément de tableau ne peut pas être un type de fonction.

  • La deuxième forme déclare une variable définie ailleurs. Il omet l’argument constant-expression entre crochets, mais pas les crochets. Vous pouvez utiliser cette forme uniquement si vous avez précédemment initialisé le tableau, si vous l'avez déclaré comme paramètre ou si vous l'avez déclaré comme référence à un tableau explicitement défini ailleurs dans le programme.

Dans les deux formulaires, direct-declarator nomme la variable et peut modifier le type de la variable. Les crochets ([ ]) qui suivent direct-declarator modifient le déclarateur en type de tableau.

Des qualificateurs de type peuvent apparaître dans la déclaration d'un objet de type tableau, mais les qualificateurs s'appliquent aux éléments plutôt qu'au tableau lui-même.

Vous pouvez déclarer un tableau de tableaux (tableau « multidimensionnel ») en indiquant après le déclarateur de tableau une liste d'expressions constantes entre crochets, comme illustré ici :

type-specifier declarator [ constant-expression ] [ constant-expression ] ...

Chaque constant-expression entre crochets définit le nombre d'éléments d'une dimension donnée : les tableaux à deux dimensions comportent deux expressions entre crochets, les tableaux à trois dimensions en comportent trois, et ainsi de suite. Vous pouvez omettre la première expression constante si vous avez initialisé le tableau, si vous l'avez déclaré comme paramètre ou si vous l'avez déclaré comme référence à un tableau explicitement défini ailleurs dans le programme.

Vous pouvez définir des tableaux de pointeurs en différents types d'objets en utilisant des déclarateurs complexes, comme décrit dans la section Interprétation de déclarateurs plus complexes.

Les tableaux sont stockés par ligne. Par exemple, le tableau suivant comprend deux lignes comportant chacune trois colonnes :

char A[2][3];

Les trois colonnes de la première ligne sont stockées en premier, suivies des trois colonnes de la deuxième ligne. Cela signifie que le dernier indice varie plus rapidement.

Pour faire référence à un élément individuel d'un tableau, utilisez une expression d'indice, comme décrit dans la section Opérateurs suffixés.

Exemples

Les exemples suivants illustrent des déclarations de tableau :

float matrix[10][15];

Le tableau à deux dimensions nommé matrix possède 150 éléments, tous de type float.

struct {
    float x, y;
} complex[100];

L’exemple est une déclaration d'un tableau de structures. Ce tableau contient 100 éléments. Chaque élément est une structure contenant deux membres.

extern char *name[];

Cette instruction déclare le type et le nom d'un tableau de pointeurs vers char. La définition réelle de name se produit ailleurs.

Section spécifique à Microsoft

Le type d'entier requis pour conserver la taille maximale d'un tableau est la taille de size_t.

FIN de la section spécifique à Microsoft

Voir aussi

Déclarateurs et déclarations de variable