1.6.8 可见范围和变量使用期-MQL5编程参考文档-峰汇在线
诚信为本
量力而为
当前位置:峰汇在线 > MQL语言 > MQL5编程参考文档 > 正文

1.6.8 可见范围和变量使用期

有两种基本范围:局部范围和全局范围。

所有函数外部变量声明位于全局范围。 程序的任何地方都可以接入这个变量。这个变量位于内存全局池,所以其使用期同于程序使用期。

内部变量声明属于局部范围。这种变量外部不可见(因此无法得到)。大部分局部变量声明都是一个函数内声明的。局部变量声明位于存储器中,使用期同于函数使用期。

局部变量范围在存储器中声明,也可以在其他存储器以同名声明;也可以高级别声明,乃至全局范围。

示例:

void CalculateLWMA(int rates_total,int prev_calculated,int begin,const double &price[]) 
{ 
int i,limit; 
static int weightsum=0; 
double sum=0; 
//--- 
if(prev_calculated==0) 
{ 
limit=MA_Period+begin; 
//--- 为第一限价柱设置空值 
for(i=0; i<limit; i++) LineBuffer[i]=0.0; 
//--- 首先计算明显值 
double firstValue=0; 
for(int i=begin; i<limit; i++) 
{ 
int k=i-begin+1; 
weightsum+=k; 
firstValue+=k*price[i]; 
} 
firstValue/=(double)weightsum; 
LineBuffer[limit-1]=firstValue; 
} 
else 
{ 
limit=prev_calculated-1; 
} 

for(i=limit;i<rates_total;i++) 
{ 
sum=0; 
for(int j=0; j<MA_Period; j++) sum+=(MA_Period-j)*price[i-j]; 
LineBuffer[i]=sum/weightsum; 
} 
//--- 
}

注意变量i,直线声明

for(int i=begin; i<limit; i++) 
{ 
int k=i-begin+1; 
weightsum+=k; 
firstValue+=k*price[i]; 
}

其范围只是一个循环;外圈是同名的函数开始就声明的另一个变量。此外,变量k在内部声明,其范围就是循环内部。

访问静态说明符局部变量声明。这种情况下,编译器在内存全局池有一个变量。因此,静态变量使用期等于程序使用期。这就是变量范围的限制。

打赏
版权所有转载请注明标题及链接:峰汇在线 » 1.6.8 可见范围和变量使用期
上一篇:
下一篇:
分享到: 更多 (0)

如您觉得此文不错请扫码打赏!

支付宝扫一扫打赏

微信扫一扫打赏