Ambito de Variables

Existe una clasificación de las variables, según dónde y cómo se declaren:

Las variables pueden declararse al comienzo de cualquier proposición compuesta, teniendo como visibilidad la duración de esa sentencia compuesta. De la misma manera, si una variable local posee el mismo nombre que una variable externa, u otra variable local pero de un "scope" más global, entonces la variable de visibilidad más profunda es la que se ve..

Ejemplos

ejem_ambito1.c
/* Uso de variable con distintos ámbitos  */
#include <stdio.h>
void Func(void);
int VarX = 25;      /* Variable global    */
void main()
{
  printf("Valor de VarX: %d\n", VarX);
  Func();
  printf("Valor de VarX: %d\n", VarX);
  {
    int VarX = 32;  /* Local al bloque, oculta la global */
    printf("Valor de VarX: %d\n", VarX);
  }
  printf("Valor de VarX: %d\n", VarX);
}
void Func()
{
  int VarX = 40;  /* Local a la función, oculta la global*/
  printf("Valor de VarX: %d\n", VarX);
}

ejem_ambito2.c
/* Uso de variable con distintos ámbitos  */
#include <stdio.h>
void Func1(void);
void Func2(void);
void main()
{
  int Contador;

  for(Contador = 0; Contador < 10; Contador++)
    printf("Valor retornado por Func1: %d\n", Func1());
  for(Contador = 0; Contador < 10; Contador++)
    printf("Valor retornado por Func2: %d\n", Func2());
}
void Func1()
{
  int VarX = 40;  /* Variable local  */
  VarX++;
  return VarX;
}
void Func2()
{
  static int VarX = 40;      /* Variable estática */
  VarX++;
  return VarX;
}

ICOM