Récapitulatif et compléments
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:
  • Locale à un bloc

  • 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.
suivant           plan