Programmer en langage C
108
© Éditions Eyrolles
8.1 La portée des variables locales
Les variables locales ne sont connues qu’à l’intérieur de la fonction où elles sont déclarées.
Leur portée est donc limitée à cette fonction.
Les variables locales n’ont aucun lien avec des variables globales de même nom ou avec
d’autres variables locales à d’autres fonctions.
Voyez cet exemple :
int n ;
main()
{
int p ;
....
}
fct1 ()
{
int p ;
int n ;
}
La variable p de main n’a aucun rapport avec la variable p de fct1. De même, la variable n
de fct1 n’a aucun rapport avec la variable globale n. Notez qu’il est alors impossible, dans la
fonction fct1, d’utiliser cette variable globale n.
8.2 Les variables locales automatiques
Par défaut, les variables locales ont une durée de vie limitée à celle d’une exécution de la
fonction dans laquelle elles figurent.
Plus précisément, leurs emplacements ne sont pas définis de manière permanente comme ceux
des variables globales. Un nouvel espace mémoire leur est alloué à chaque entrée dans la fonction et libéré à chaque sortie. Il sera donc généralement différent d’un appel au suivant.
On traduit cela en disant que la classe d’allocation de ces variables est automatique. Nous
aurons l’occasion de revenir plus en détail sur cette gestion dynamique de la mémoire. Pour
l’instant, il est important de noter que la conséquence immédiate de ce mode d’allocation est
que les valeurs des variables locales ne sont pas conservées d’un appel au suivant (on dit aussi
qu’elles ne sont pas « rémanentes »). Nous reviendrons un peu plus loin (paragraphe 11.2) sur
les éventuelles initialisations de telles variables.
D’autre part, les valeurs transmises en arguments à une fonction sont traitées de la même
manière que les variables locales. Leur durée de vie correspond également à celle de la fonction.
Delannoy Livre.book Page 108 Mercredi, 6. mai 2009 4:26 16
Précédent

- 121/281

Suivant