De Documentacion NexuN
Ámbito de las variables
Existe una clasificación de las variables, según dónde y cómo se declaren:
Variables locales o automáticas
Son las que se declaran en una función y valen solo allí. Solamente tienen visibilidad dentro
de esa función y su valor se pierde al finalizar ésta. Estas variables se crean en memoria
al entrar a ejecutarse la función, y desaparecen al finalizar; esto hace que de llamada en
llamada de una misma función, las variables puedan ocupar distintas posiciones en la memoria,
y por lo tanto no conservan su valor.
Si en el programa que llama a una función, existen variables con el mismo nombre que otras
definidas en la función, no se interfieren entre sí.
Ejemplo:
#include <stdio.h>
void fun();
void main(){
int var=10;
printf("\nvar en main = %d\n",var);
fun();
printf("\nvar en main = %d\n",var);
}
void fun(){
int var=20;
printf("\n var en fun = %d\n",var);
var+=10;
printf("\n var en fun = %d\n",var);
}
La salida del código anterior es:
var en main = 10
var en fun =20
var en fun =30
var en main = 10
Variables globales
Son definidas fuera de las funciones, y ocupan una posición de memoria fija. Hay que tener
en cuenta que estas variables pueden ser modificadas desde cualquier función, y por lo
tanto aumenta la posibilidad de modificar inadvertidamente su valor.
• Si estas variables globales, se utilizan en varias funciones, ahora si se interfieren entre sí.
Ejemplo:
#include <stdio.h>
void fun();
void fun1();
int var=10; //variable global
void main()
{
printf("\nvar en main = %d\n",var);
fun();
printf("\nvar en main = %d\n",var);
fun1();
printf("\nvar en main = %d\n",var);
}
void fun()
{
//la variable var se puede utilizar en esta función, pues al ser global la conocen
//todas las funciones por debajo de su definición
printf("\n var en fun = %d\n",var);
var+=25;
printf("\n var en fun = %d\n",var);
}
/*Si dentro de la función se la vuelve a definir, la usa como local en la función*/
void fun1()
{
int var=20; //esta variable var es local a esta función
printf("\n var en fun1 = %d\n",var);
var+=30;
printf("\n var en fun1 = %d\n",var);
}
La salida del código anterior es:
var en main = 10
var en fun =10
var en fun =35
var en main = 35
var en fun1 = 20
var en fun1 = 50
var en main = 35
• Si se desea que una variable sea global solo para un grupo de funciones,
se definiría fuera de la primera función del grupo.
Ejemplo:
En el siguiente programa la variable var será global para todo el programa y la
variable var1 sólo para las funciones fun() y fun1().
#include <stdio.h>
void fun();
void fun1();
int var=10;
void main()
{
printf("\nvar en main = %d\n",var);
fun();
printf("\nvar en main despues de fun = %d\n",var);
fun1();
printf("\nvar en main despues de fun1 = %d\n",var);
}
int var1=55;
void fun()
{
printf("\n var en fun = %d\n",var);
var+=25;
var1+=5;
printf("\n var en fun = %d\n",var);
printf("\n var1 en fun = %d\n",var1);
fun1();
printf("\n var1 en fun = %d\n",var1);
}
void fun1()
{
var+=30;
var1+=15;
printf("\n var en fun1 = %d\n",var);
printf("\n var1 en fun1 = %d\n",var1);
}
Variables estáticas
Son permanentes y privadas a la función que las declara. Una variable estática declarada
dentro de una función, trabaja como una variable automática, con la diferencia que como
ocupa un lugar permanente y fijo en la memoria, guarda su valor de llamada en llamada.
Ejemplo:
void estatica(); // Prototipo de la función
void main()
{
int i;
for (i=1; i<=5; ++i)
estatica();
}
void estatica()
{
auto int var1 = 0; //variable local o automática
static int var2 = 0; //variable estática
printf("automatica = %d, estatica = %d \n", var1, var2);
++var1;
++var2;
}
La salida del código anterior es:
automatica = 0, estatica = 0
automatica = 0, estatica = 1
automatica = 0, estatica = 2
automatica = 0, estatica = 3
automatica = 0, estatica = 4
Ir a Módulo programación en lenguajes estructurados (ple)