Variables à portée globale.

Rappel:
Une variable définie dans un bloc (du main ou d'une procédure/fonction) a une portée locale au bloc où elle est déclarée.  

Une variable globale:
C'est une variable dont la portée n'est pas limitée à un bloc, sa portée peut être globale à un fichier (mot clé static) ou globale à plusieurs fichiers (dans la cas du découpage d'un programme en plusieurs fichiers source).

Pourquoi des variables globales?
Les variables globales sont nécessaires lorsque on veut partager des données entre le programme principal et des fonctions.


Comment déclarer une variable globale? Il faut la déclarer en dehors de tout bloc.
    1) Globale à un fichier
: il faut la déclarer en début de fichier (après les includes et les defines) et précéder sa déclaration du mot clé static.
#include <stdio.h>
static int j;          /* La variable j est globale à ce fichier */
int main (void)
{
....

}
     

    2) Globale à plusieurs fichiers (à tout le programme): il faut la déclarer en début de fichier (après les includes et les defines) dans un des fichiers et la déclarer en externe (mot clé extern) dans les autres.
/* Fichier principal: exemple.c */
#include <stdio.h>
int i;    /* La variable i est globale à tous les fichiers composant le programme */
int main (void)
{...

}
     
/* Fichier contenant la fonction bidon: bidon.c */
#include <stdio.h>
extern i;       /*i est définie à l'extérieur de ce fichier*/
int bidon()
{
...                   
}
suivant                 plan