Descargar MetaTrader 5

Variables estáticas

La clase de memoria static define una variable estática. El modificador static se indica antes del tipo de datos.

Ejemplo:

int somefunc()
  {
   static int flag=10;
   ...
   return(flag);
  }

Una variable estática puede ser inicializada por una constante correspondiente a su tipo o por una expresión constante, a diferencia de una variable local simple, que puede ser inicializada por cualquier expresión.

Las variables estáticas existen a partir del momento de ejecución del programa y son inicializadas sólo una vez antes de llamar a la función especializada OnInit(). Si los valores iniciales no están especificados, entonces las variables de la clase estática de la memoria adquieren los valores iniciales cero.

Las variables locales declaradas con la palabra clave static conservan sus valores durante todo el tiempo de vida de la función. Con cada siguiente llamada a la función, estas variables locales ya contienen los valores que tenían durante la llamada anterior.

Cualquier variable en el bloque, salvo los parámetros formales de una función, puede ser definida como estática.  

Ejemplo:

int Counter()
  {
   static int count;
   count++;
   if(count%100==0) Print("La función Counter ha sido llamada ya ",count," veces");
   return count;
  }
void OnStart()
  {
//---
   int c=345;
   for(int i=0;i<1000;i++)
     {
      int c=Counter();
     }
   Print("c = ",c);
  }

Véase también

Tipos de datos, Encapsulación y extensión de tipos, Inicialización de variables, Visibilidad y tiempo de vida de variables, Creación y eliminación de objetos, Miembros estáticos de la clase