Cette liberté de donner à une variable locale une durée de vie
égale à celle du programme, permet de résoudre des problèmes du type
exposé ci-dessous.
Imaginons une procédure qui pour une raison quelconque doit connaître
combien de fois elle a été appelée.
Le programmeur a besoin d'une variable dont la durée de vie
est supérieure à celle de la procédure concernée, ce sera donc
une variable statique.
Cependant cette variable doit être une variable privée de la procédure,
(il n'y a aucune raison qu'une autre procédure puisse en modifier la
valeur), il faut donc que ce soit une variable locale à la procédure.
En C, on programmera de la manière suivante :
void proc()
{
static int nb_appel = 0;
nb_appel++;
...
}
Dans d'autres langages, de manière à satisfaire les contraintes de durée
de vie, on aurait été obligé de faire de la variable nb_appel
,
une variable globale, la rendant ainsi accessible aux autres procédures,
ce qui est tout à fait illogique.
Matthieu Moy
2017-02-08