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.
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.
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.
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
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.
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*/