Les variables déclarées dans un bloc d'instructions sont uniquement visibles à l'intérieur de ce bloc. On dit que ce sont des variables locales à ce bloc.
Exemple
La variable NOM est définie localement dans le bloc extérieur de la fonction HELLO. Ainsi, aucune autre fonction n'a accès à la variable NOM:
void HELLO(void); { char NOM[20]; printf("Introduisez votre nom : "); gets(NOM); printf("Bonjour %s !\n", NOM); }
Exemple
La déclaration de la variable I se trouve à l'intérieur d'un bloc d'instructions conditionnel. Elle n'est pas visible à l'extérieur de ce bloc, ni même dans la fonction qui l'entoure.
if (N>0) { int I; for (I=0; I<N; I++) ... }
Attention !
Une variable déclarée à l'intérieur d'un bloc cache toutes les variables du même nom des blocs qui l'entourent.
Exemple
Dans la fonction suivante,
int FONCTION(int A); { int X; ... X = 100; ... while (A>10) { double X; ... X *= A; ... } }
la première instruction X=100 se rapporte à la variable du type int déclarée dans le bloc extérieur de la fonction; l'instruction X*=A agit sur la variable du type double déclarée dans la boucle while. A l'intérieur de la boucle, il est impossible d'accéder à la variable X du bloc extérieur.
Ce n'est pas du bon style d'utiliser des noms de variables qui cachent des variables déclarées dans des blocs extérieurs; ceci peut facilement mener à des malentendus et à des erreurs.
La plupart des programmes C ne profitent pas de la possibilité de déclarer des variables ou des fonctions à l'intérieur d'une boucle ou d'un bloc conditionnel. Dans la suite, nous allons faire toutes nos déclarations locales au début des fonctions.