Déclaration et déclarateurs
Remonter à Syntaxe de déclaration - Index
Une déclaration est une liste de noms. Les noms sont parfois référencés comme des déclarateurs ou des identificateurs. La déclaration commence par des spécificateurs de classe de stockage, des spécificateurs de type et autres modificateurs facultatifs. Les identificateurs sont séparés par des virgules, et la liste se termine par un point-virgule.
Les déclarations simples d'identificateurs de variables se présentent comme suit :
type-de-données var1 <=init1>, var2 <=init2>, ...;
où var1
, var2
,... est une séquence d'identificateurs avec, facultativement, des valeurs d'initialisation. Chaque variable est déclarée du type type-de-données. Par exemple :
int x = 1, y = 2;
crée deux variables entières x
et y
(qui sont initialisées respectivement à 1
et à 2
).
Ce sont des définitions ; l'espace mémoire est réservé et les valeurs d'initialisation, s'il y a lieu, sont appliquées.
La valeur d'initialisation pour un objet automatique peut être n'importe quelle expression légale qui a pour résultat une valeur d'affectation compatible avec le type de la variable en question. Les valeurs d'initialisation pour les objets statiques doivent être des constantes ou des expressions constantes.
En C++, une valeur d'initialisation pour un objet statique peut être toute expression intégrant des constantes, des variables déjà déclarées et des fonctions.
Le format du déclarateur indique le mode d'interprétation du nom
déclaré lorsqu'il est utilisé dans une expression. Si type est un type quelconque, si le spécificateur-classe-stockage
est un spécificateur de classe de stockage quelconque et si D1
et D2
sont deux déclarateurs, la déclaration :
spécificateur-classe-stockage type D1, D2;
indique que chaque occurrence de D1
ou D2
dans une expression sera traitée comme un objet de type type et dont la classe de stockage est celle mentionnée par spécificateur-classe-stockage
. Le type de nom
dans le déclarateur sera une phrase contenant type, comme une fonction "pointeur sur type", "tableau de type" "type" renvoyant type" ou "pointeur sur fonction renvoyant type", etc.
Par exemple, dans les exemples de syntaxes de déclarations suivants, chaque déclarateur est utilisable comme rvalue (ou comme lvalue dans certains cas) dans les expressions où un objet unique int aurait sa place. Les types d'identificateurs imbriqués sont dérivés de leurs déclarateurs, de la façon suivante :
Exemples de syntaxes de déclarations
Syntaxe du déclarateur | Type impliqué de nom | Exemple |
---|---|---|
type nom; |
type |
int compte; |
type nom[]; |
tableau (ouvert) de type |
int compte[]; |
type nom[3]; |
Tableau fixe de trois éléments, tous de type |
int compte[3]; |
type *nom; |
Pointeur sur type |
int *compte; |
type *nom[]; |
tableau (ouvert) de pointeurs sur type |
int *compte[]; |
type *(nom[]); |
Idem |
int *(compte[]); |
type (*nom)[]; |
Pointeur sur un tableau (ouvert) de type |
int (*compte) []; |
type &nom; |
Référence de type (C++ seulement) |
int &compte; |
type nom(); |
Fonction renvoyant type |
int compte(); |
type *nom(); |
Fonction renvoyant un pointeur sur type |
int *compte(); |
type *(nom()); |
Idem |
int *(compte()); |
type (*nom)(); |
Pointeur sur une fonction renvoyant type |
int (*compte) (); |
Notez la nécessité des parenthèses dans (*nom)[]
et (*nom)()
puisque la priorité du déclarateur de tableau [ ]
et du déclarateur de fonction ( )
est supérieure à celle du déclarateur de pointeur *
. Les parenthèses dans *(nom[])
sont facultatives.
- Remarque : Voir la rubrique Syntaxe des déclarations C++Builder pour la syntaxe des déclarateurs. La définition couvre à la fois les déclarateurs d'identificateur et de fonction.