const
En programmation dans les langages C ou C++, const est un mot-clé permettant au programmeur de signaler au compilateur que l'élément ainsi qualifié ne doit pas être modifié pendant l'exécution du programme[1]. Cet élément sera donc constant tout le long d'une exécution normale du programme.
Mot-clé réservé
En tant que mot-clé réservé par spécification du langage[2],[3], il ne peut être utilisé que pour son objectif, ce qui proscrit, par exemple, son usage en tant que nom de variable.
Norme
Sa première introduction se situe dans la norme ANSI du langage C[3] de 1989. On le retrouve aussi dans la première norme ISO du langage C++[2] de 1998.
Usage
Déclaration d'une constante
Syntaxe
Selon sa position dans l'expression, il peut être interprété différemment par le compilateur[4].
const char c1; //Le caractère ne peut être modifié
const char * c2; //Le caractère pointé ne peut être modifié
char * const c3; //Le pointeur vers le caractère ne peut être modifié
const char * const c4; //Le pointeur ET le caractère pointé ne peuvent être modifiés
Conséquences
Le compilateur vérifie que la variable ne puisse être modifiée à aucun endroit du code. Ainsi, il existe une application en programmation par contrat par le fait que la déclaration implique une postcondition garantie à la compilation[5]. De plus, il permet aussi de vérifier le type de la constante.
Fonctions
Dans la syntaxe d'appel d'une fonction, il permet de signaler que la variable ne sera pas modifiée dans toute la fonction. Ceci permet d'utiliser des constantes en paramètres de fonctions.
int mafonction(const char * c)
Le compilateur renvoie un warning si une constante passe en paramètre non constant dans une fonction[6].
int autrefonction (char * i);
const char * param;
autrefonction(param); /* Cette ligne envoie une erreur car on ne peut plus garantir que la chaîne param restera bien inchangée*/
Voir aussi
Notes et références
- « const (C++) », sur msdn.microsoft.com (consulté le )
- « ISO/IEC 14882:1998 - Langages de programmation -- C++ », sur www.iso.org (consulté le )
- Brian W. Kernighan et Dennis M. Ritchie (trad. de l'anglais), Le langage C - 2e éd : Norme ANSI, Paris, Dunod, 280 p. (ISBN 978-2-10-071577-0)
- « Introduction au langage C : Qualificatifs de type », sur c.developpez.com (consulté le )
- Julien Blanc, « Programmation par contrat, application en C++ », sur julien-blanc.developpez.com (consulté le ), p. V-A-2. Le cas de const
- Jesse Liberty, C++, CampusPress (ISBN 978-2-7440-0840-5), p. 51