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.