Discussion

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