Les variables
La déclaration de variables locales en C/C++ est la même qu’en Java. En plus
des variables locales, C/C++ permet de déclarer des variables globales. Il
suffit de déclarer ces variables en dehors des procédures. Une variable globale
est accessible par toutes les procédures de tous les fichiers .c
ou .cpp
de
votre application.
Vous pouvez limiter la portée des variables globales en utilisant le modificateur
static
(par exemple static int counter
). Dans ce cas, la variable n’est
globale qu’au fichier dans lequel elle est déclarée et non au programme tout entier.
Les variables globales doivent être évitées le plus possible, et si vous en
avez vraiment besoin, limitez alors leur portée avec le modificateur static
.
Les variables locales peuvent aussi être déclarées avec le modificateur static
.
Dans ce cas, la variable est en fait globale, mais elle n’est visible que dans
la procédure dans laquelle elle est déclarée.
Considérons par exemple la fonction NextId
ci-dessous :
int NextId() {
static int id = 0;
return id++;
}
Cette fonction retourne 0
au premier appel, puis 1
au deuxième, 2
au
troisième … La variable est globale et conserve sa valeur entre les appels.
Une variable en C/C++ peut aussi avoir le modificateur volatile
et signifie
au compilateur qu’il doit déclencher certaines optimisations, car cette variable
peut être modifiée par d’autres parties. Nous verrons dans les TPs l’importance
de ce modificateur dans le contexte des systèmes embarqués.
Si en C on doit déclarer le type de chaque variable explicitement, C++ est capable
de faire de l’inférence de type. Utilisez pour cela le type auto
:
auto myVar = 42;
Le compilateur choisira un type compatible avec l’assignation. Ce mécanisme peut être pratique, mais un type explicite, avec une taille précise, est souvent une meilleure option.