跳至内容

Static Variables

静态变量

静态存储类用于定义静态变量。静态修饰符位于数据类型之前。

示例:

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

静态变量可以通过与其类型对应的常量或常量表达式进行初始化。与简单的局部变量不同,局部变量可以通过任何表达式进行初始化。

静态变量从程序执行的那一刻开始存在,并且只在程序加载后初始化一次。如果未指定初始值,静态存储类的变量将默认取零值。作用域全局变量的作用域相同:即mql4-program的生命周期。静态变量的作用域仅限于定义该变量的代码块。

使用静态关键字声明的局部变量在整个函数生命周期中保持其值。每次调用函数时,这些局部变量将包含上次调用时的值。

代码块中的任何变量,除了函数的形式参数,都可以定义为静态变量。如果在局部级别声明的变量不是静态变量,则程序栈会自动为这种变量分配内存。

示例:

int Counter()
  {
   static int count;
   count++;
   if(count%100==0) Print("Function Counter has been called ",count," times");
   return count;
  }
void OnStart()
  {
//---
   int c=345;
   for(int i=0;i<1000;i++)
     {
      int c=Counter();
     }
   Print("c =",c);
  }

另请参阅

数据类型类型的封装和扩展性变量的初始化变量的可见性作用域和生命周期对象的创建和删除静态类成员

最后更新于