© Éditions Eyrolles
109
chapitre n° 6
La programmation modulaire et les fonctions
8.3 Les variables locales statiques
Il est toutefois possible de demander d’attribuer un emplacement permanent à une variable
locale et qu’ainsi sa valeur se conserve d’un appel au suivant. Il suffit pour cela de la déclarer
à l’aide du mot-clé static (le mot static employé sans indication de type est équivalent à
static int).
En voici un exemple :
La variable locale i a été déclarée de classe « statique ». On constate bien que sa valeur progresse de un à chaque appel. De plus, on note qu’au premier appel sa valeur est nulle. En effet,
comme pour les variables globales (lesquelles sont aussi de classe statique) : les variables
locales de classe statique sont, par défaut, initialisées à zéro.
Prenez garde à ne pas confondre une variable locale de classe statique avec une variable
globale. En effet, la portée d’une telle variable reste toujours limitée à la fonction dans laquelle
elle est définie. Ainsi, dans notre exemple, nous pourrions définir une variable globale nommée i qui n’aurait alors aucun rapport avec la variable i de fct.
Exemple d’utilisation de variable locale statique
#include
main()
{ void fct(void) ;
int n ;
for ( n=1 ; n<=5 ; n++)
fct() ;
}
void fct(void)
{ static int i ;
i++ ;
printf ("appel numéro : %d\n", i) ;
}
appel numéro : 1
appel numéro : 2
appel numéro : 3
appel numéro : 4
appel numéro : 5
Delannoy Livre.book Page 109 Mercredi, 6. mai 2009 4:26 16
109
chapitre n° 6
La programmation modulaire et les fonctions
8.3 Les variables locales statiques
Il est toutefois possible de demander d’attribuer un emplacement permanent à une variable
locale et qu’ainsi sa valeur se conserve d’un appel au suivant. Il suffit pour cela de la déclarer
à l’aide du mot-clé static (le mot static employé sans indication de type est équivalent à
static int).
En voici un exemple :
La variable locale i a été déclarée de classe « statique ». On constate bien que sa valeur progresse de un à chaque appel. De plus, on note qu’au premier appel sa valeur est nulle. En effet,
comme pour les variables globales (lesquelles sont aussi de classe statique) : les variables
locales de classe statique sont, par défaut, initialisées à zéro.
Prenez garde à ne pas confondre une variable locale de classe statique avec une variable
globale. En effet, la portée d’une telle variable reste toujours limitée à la fonction dans laquelle
elle est définie. Ainsi, dans notre exemple, nous pourrions définir une variable globale nommée i qui n’aurait alors aucun rapport avec la variable i de fct.
Exemple d’utilisation de variable locale statique
#include
main()
{ void fct(void) ;
int n ;
for ( n=1 ; n<=5 ; n++)
fct() ;
}
void fct(void)
{ static int i ;
i++ ;
printf ("appel numéro : %d\n", i) ;
}
appel numéro : 1
appel numéro : 2
appel numéro : 3
appel numéro : 4
appel numéro : 5
Delannoy Livre.book Page 109 Mercredi, 6. mai 2009 4:26 16
