6.13 Ámbitos
y existencia de variables y tipos
Las
variables y los tipos de datos se pueden declarar en dos puntos:
- Al
principio de un bloque ( después del "abre llave"
{
)
- Fuera
de bloques
Las
variables declaradas fuera de bloques se llaman
globales.
Las
variables en el interior de un bloque son
locales
a ese bloque.
Ámbito
Una
variable global se puede utilizar en todo el programa, desde el punto en que se
declara.
Una
variable local se puede utilizar desde el punto en que se declara hasta el
final del bloque donde se declaró.
Si
se declara una variable local con el mismo nombre de otra variable accesible en
el bloque actual, la nueva variable
oculta
a la otra variable.
Existencia
Una
variable global existe permanentemente mientras el programa se ejecuta.
Una
variable local sólo existe mientras se está ejecutando
código del bloque donde se ha declarado.
Así,
una variable local a una función se crea cuando se llama a la
función y desaparece cuando la función retorna.
Ejemplo
de ámbitos
int global;
double area ( double base, double altura )
{
double temp = base*altura;
return temp;
}
main()
{
int local;
...
while (1)
{
int mas_local;
...
{
int mas_local_todavia;
int local;
...
}
}
}
Ámbitos
y existencia de tipos de datos
Los
ámbitos y existencia de los tipos son similares a los de las variables.
Los
tipos declarados fuera de bloques son globales al programa.
Los
tipos declarados dentro de bloques son locales a ese bloque.
struct
pepe { int a,b,c; };
/*
ámbito global */
int
funcion (void)
{
struct
local { int x1,x2; };
/*
ámbito local */
struct
pepe una;
struct
local otra;
}
struct pepe variable; /* correcto */
struct local otra; /* incorrecto: no estamos
en el ámbito de “local” */