Cours 8.6. Les variables globales

Définition

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é.

Tant que faire se peut, l’utilisation des variables globales est à bannir.

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.

Exemple

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()'.

Exercice

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);
}

Quiz

Les variables globales sont ...

Vérifier Bravo ! Les variables globales sont à éviter. Essaie encore ...

La portée d'une variable globale est ...

Vérifier Bravo ! La porté d'une variable globale démarre à sa déclaration. Essaie encore ...

La mémoire allouée pour une variable globale ...

Vérifier Bravo ! Les variables globales occupent de l'espace mémoire jusqu'à la fin de l'exécution du program. Essaie encore ...

Qu'affiche le programme suivant ?

#include <stdio.h>
int var = 7;

int main(void) {
  int var = 12;
  printf ("var = %d",var);
  return 0;
}
Vérifier Bravo ! Il y a deux variables var, une locale et une globale. Les variables locales écrasent les variables globales. Essaie encore ...

Voir aussi


Dernière mise à jour : 16/11/2023