Leçon 24 : Règles de portée : Variables locales et globales
La portée définit la zone du programme où un identifiant déclaré (variable, fonction, etc.) peut être utilisé.
1. Portée locale (Variables automatiques)
- Variables déclarées à l'intérieur d'une fonction, d'un bloc (
{}) ou comme paramètres de fonction. - Leur portée est limitée à ce bloc.
- Elles sont créées à l'entrée du bloc et détruites à sa sortie.
c void exemple_fonction() { int x = 10; // Locale à exemple_fonction if (x > 5) { int y = 20; // Locale au bloc if printf("y vaut %d\n", y); } // y est détruite ici // printf("y vaut %d\n", y); // ERREUR : y est hors de portée }
2. Portée globale (Variables externes)
- Variables déclarées en dehors de toute fonction.
- Leur portée s'étend du point de déclaration jusqu'à la fin du fichier.
- Elles peuvent être consultées et modifiées par n'importe quelle fonction du programme (et potentiellement d'autres fichiers).
c int COMPTEUR_GLOBAL = 0; // Variable globale
void incrementer() { COMPTEUR_GLOBAL++; // Accessible ici }
int main() { incrementer(); printf("Compteur : %d\n", COMPTEUR_GLOBAL); // Accessible ici return 0; }
Classes de stockage (Brève mention)
Les spécificateurs de classe de stockage comme auto, extern, static et register contrôlent la portée, la durée de vie et la liaison des variables. Nous nous concentrerons sur static plus tard, qui permet à une variable de conserver sa valeur entre les appels de fonction, même si elle est définie localement.