Ver Mensaje Individual
  #13 (permalink)  
Antiguo 25/05/2006, 17:24
Nivel7
 
Fecha de Ingreso: abril-2006
Ubicación: Acapulco Gro. México
Mensajes: 483
Antigüedad: 18 años
Puntos: 2
No lo creo

No creo que tenga sentido usar una variable static, dentro de main.

ya que es muy raro llamar desde otra funcion a main, solo que el SO lo haga, o desde otra aplicacion, pero dudo que de una ejecucion a otra el valor de la variable static se conserve.

tu en realidad te refieres a una constante.

const int i = 0;

i siempre sera i y no podra modificarse.

static int i = 0;

i si se puede modificar.

static tienen dos funciones, como especificador de ambito y de almacenamiento(vida).

En ambito:
static es lo contrario a extern.

En almacenamiento:
static es lo contrario a auto.

en realidad el funcionamiento de static como especificador de almacenamiento, es muy similar auna variable global.

Ejemplo:
int acum = 0;

int acumulado(int val)
{
return acum += val;
}

int main()
{

for(int i = 1; i <= 10; i++)
cout << acumulado(i) << endl;

return 0;
}

este pequeño programa te mostraria la suma de los 10 primeros digitos.

si la funcion fuera esta:
int acumulado(int val)
{
int acum = 0;
return acum += val;
}

la funcion retornaria solo el valor de val + 0;
para solucionar el problema sin usar variables globales hariamos:

int acumulado(int val)
{
static int acum = 0;
return acum += val;
}

acum se crea antes de main y se destruye una vez terminada main, por tanto iría conservando el valor de la suma.

si intentaras hacer esto:

int acumulado(int val)
{
const int acum = 0;
return acum += val;
}

no te compilaria, o te daria error en la ejecucion.

Saludos.