Deux
catégories de variables pour deux espaces de réservation:
- Statique: L'espace
est reservée en zone des données
au chargement du programme avant exécution.
- Automatique: L'espace est
réservée sur la pile
(ou
dans des registres) pendant l'exécution.
|
- Les
variables globales ou celles qui sont précédées du
mot clé static sont des variables
statiques. Le mot clé static permet de forcer une variable
à être statique plutôt qu'automatique.
int bidon()
{
static int i =0; /*
i est statique, son initialisation est faite une seule fois, et sa
valeur reste d'un appel à l'autre */
...
}
- Les variables locales (non
précédées du mot clé static)
à un bloc
sont automatiques.
|
Deux
portées:
- Globale
- à un fichier du programme
- à tous les fichiers constituant le programme
|
- Les variables locales sont déclarées
juste après le début du bloc ({)
- Les variables globales sont déclarées en
dehors de tout bloc (elles sont statiques).
|
Deux
durées de vie:
- Limitée à la durée de vie du bloc où la variable est définie
- Equivalente à la durée de vie du programme.
|
- L'espace mémoire (sur la pile) est
réservé à l'exécution au moment à
l'entrée du bloc,
l'espace est récupéré à la sortie du bloc.
- Les variables globales et les variables locales
statiques (mot clé static)
existent pendant toute l'exécution du programme ainsi que les
variables locales au main.
|