Les variables déclarées dans une fonction sont locales. A chaque appel de la fonction, elles sont déclarées, utilisées, puis détruites. En conséquence, il n'est pas possible de consulter, lors d'un deuxième appel à une fonction, la valeur qu'avait une des variables locales à la fin du premier appel.
Il est possible cependant de préciser qu'une variable déclarée dans une
fonction ne doit pas être détruite et redéclarée à chaque appel, mais qu'il
doit toujours s'agir de la même variable. Pour ce faire il suffit de
préciser le mot-clé static
devant la variable lors de sa déclaration
et initialisation. L'initialisation n'aura lieu que lors du premier appel à
la fonction; au deuxième appel, l'instruction de déclaration/initialisation ne
sera pas exécutée.
Ainsi pour compter le nombre de fois qu'une fonction a été appelée:
void f(){ int a = 1; // variable locale déclarée et effacée à chaque appel static int nb = 1; // variable gardée en mémoire nb ++; }