Static storage duration
Un objet dont l'identifiant est déclaré sans le spécificateur de classe de stockage _Thread_local , et soit avec une liaison externe ou interne, soit avec le spécificateur de classe de stockage static , possède une durée de stockage statique. Sa durée de vie correspond à l'exécution entière du programme et sa valeur stockée est initialisée une seule fois, avant le démarrage du programme.
Notes
Puisque sa valeur stockée est initialisée une seule fois, un objet avec une durée de stockage statique peut profiler les invocations d'une fonction.
L'autre utilisation du mot-clé static est la portée de fichier .
Exemple
#include <stdio.h> void f (void) { static int count = 0; // static variable int i = 0; // automatic variable printf("%d %d\n", i++, count++); } int main(void) { for (int ndx=0; ndx<10; ++ndx) f(); }
Sortie :
0 0 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9