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é

[modifier | modifier le code]

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

[modifier | modifier le code]

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

[modifier | modifier le code]

### Déclaration d'une constante

[modifier | modifier le code]

#### Syntaxe

[modifier | modifier le code]

Selon sa position dans l'expression, le mot-clé const 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

[modifier | modifier le code]

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

[modifier | modifier le code]

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

[modifier | modifier le code]

* Correction d'un algorithme
* Restrict

## Notes et références

[modifier | modifier le code]

1. ↑ « const (C++) », sur msdn.microsoft.com (consulté le 16 mars 2016)
2. ↑ a et b « ISO/IEC 14882:1998 - Langages de programmation -- C++ », sur www.iso.org (consulté le 16 mars 2016)
3. ↑ a et b 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)
4. ↑ « Introduction au langage C : Qualificatifs de type », sur c.developpez.com (consulté le 16 mars 2016)
5. ↑ Julien Blanc, « Programmation par contrat, application en C++ », sur julien-blanc.developpez.com (consulté le 16 mars 2016), p. V-A-2. Le cas de const
6. ↑ Jesse Liberty, C++, CampusPress (ISBN 978-2-7440-0840-5), p. 51

* Portail de la programmation informatique

*[trad.]: traduction
*[p.]: page