Une variable globale est une variable déclarée en dehors de toutes les fonctions. Sa portée s'étend de sa déclaration jusqu'à la fin du programme, son allocation mémoire aussi. Une variable globale alloue en permanance l'espace mémoire qui lui est destiné.
Préférer les variables locales et les passages de paramètres aux variables globales.
Si au sein d'une fonction une variable coexiste avec une variable globale du même nom, c'est la variable locale qui est considérée dans la fonction.
Voici un exemple de programme qui utilise une variable globale :
int i=0; // Variable globale i
void fct(void);
int main(void) {
for ( ;i<5;i++) // La boucle utilise i
fct ();
return 0;
}
void fct(void) {
printf ("i= %d\n", i); // La fonction utilise aussi i
}
La variable i
est une variable globale qui est accessible en lecture et en écriture
dans le main()
et dans la fonction `fct()'.
On fournit le programme suivant qui contient 4 variables gloables. Corriger le programme afin de supprimer toutes les variables globales en les remplaçant par des variables locales et des passages de paramètres dans la fonction.
# include <stdio.h>
// Variables globales À SUPPRIMER
int a,b,c,sum;
// Fonction qui saisit un entier
void SaisieEntier (void);
int main(void)
{
// Saisie du premier entier
SaisieEntier();
a=c;
// Saisie du deuxième entier
SaisieEntier();
b=c;
// Calcule et affiche la somme
sum=a+b;
printf ("La somme est de %d",sum);
return 0 ;
}
// Implémentation de la fonction SaisieEntier
void SaisieEntier (void)
{
printf ("Saisir un entier : ");
scanf ("%d",&c);
}
Les variables globales sont ...
La portée d'une variable globale est ...
La mémoire allouée pour une variable globale ...
Qu'affiche le programme suivant ?
#include <stdio.h>
int var = 7;
int main(void) {
int var = 12;
printf ("var = %d",var);
return 0;
}
var
, une locale et une globale. Les variables locales écrasent les variables globales.
Essaie encore ...