© Éditions Eyrolles
115
chapitre n° 6
La programmation modulaire et les fonctions
11 Initialisation des variables
Nous avons vu qu’il était possible d’initialiser explicitement une variable lors de sa déclaration. Ici, nous allons faire le point sur ces possibilités, lesquelles dépendent en fait de la
classe d’allocation de la variable concernée.
11.1 Les variables de classe statique
Ces variables sont permanentes. Elles sont initialisées une seule fois avant le début de l’exécution du programme.
Elles peuvent être initialisées explicitement lors de leur déclaration. Nous verrons que cela
s’applique également aux tableaux ou aux structures. Bien entendu, les valeurs servant à ces
initialisations ne pourront être que des constantes ou des expressions constantes (c’est-à-dire
calculables par le compilateur). N’oubliez pas que les constantes symboliques définies par
const ne sont pas considérées comme des expressions constantes.
En l’absence d’initialisation explicite, ces variables seront initialisées à zéro.
11.2 Les variables de classe automatique
Ces variables ne sont pas initialisées par défaut. En revanche, comme les variables de classe
statique, elles peuvent être initialisées explicitement lors de leur déclaration.
Dans ce cas, lorsqu’il s’agit de variables scalaires (ce qui est le cas de toutes celles rencontrées
jusqu’ici, mais ne sera pas le cas des tableaux ou des structures), la norme vous autorise à
utiliser comme valeur initiale non seulement une valeur constante, mais également n’importe
quelle expression (dans la mesure où sa valeur est définie au moment de l’entrée dans la fonction
correspondante, laquelle, ne l’oubliez pas, peut être la fonction main).
En voici un cas d’école :
Initialisation de variables de classe automatique
#include
int n ;
main()
{ void fct (int r) ;
int p ;
for (p=1 ; p<=5 ; p++)
{ n = 2*p ;
fct(p) ;
}
}
void fct(int r)
{
int q=n, s=r*n ;
printf ("%d %d %d\n", r,q,s) ;
}
Delannoy Livre.book Page 115 Mercredi, 6. mai 2009 4:26 16
Précédent

- 128/281

Suivant