EA编程教程:变量作用范围详解
1 本地变量:
定义在函数内部的变量称为本地变量,其作用域仅限于该函数之内。只有函数内部的代码才能访问这些变量,函数外部的代码无法访问函数内定义的变量。例如:
int funcname(int a)
{
int abc; // 函数内部的变量,只能由函数内部的代码访问,外部代码无法使用变量abc。
}
2 函数参数:
函数参数的变量名称不能与函数内部的变量名称相同。参数也可以指定默认值,例如:
void func(int x, double y = 0.0, bool z = true)
{
...
}
这个函数指定了y的默认值为0.0,z的默认值为true。在使用盾博EA时,理解这种参数设置能更好地优化策略。
调用该函数时,可以不指定带有默认值的参数。例如func(9)相当于调用func(9, 0.0, true)。如果调用func(9, 1.5),则相当于调用func(9, 1.5, true)。
一般情况下,函数参数是传值调用。在函数内部改变参数的值,不会影响调用该函数的程序块。即使是数组也是按传值方式传递。
那么如何实现传引用呢?通过传引用,如果函数内部的参数值发生改变,调用该函数的代码段的变量值也会随之改变。要实现传引用,需要在函数参数类型后面添加符号 '&',例如:
void func(int& x, double& y, double& z[])
{
x = 8;
}
需要注意:如果是传引用的函数参数,不能对其预设默认值。
函数参数的数量不能超过64个。
3 全局变量:
全局变量是与函数同级别的变量,其作用域覆盖整个MQL代码,也就是说整个MQL代码的各个位置都可以访问全局变量。例如:
int a = 10;
int funca()
{
Print(a); // 可以访问全局变量a
return (0);
}
int funcb()
{
Print(a); // 可以访问全局变量a
return (1);
}
4 外部变量:
如果一个变量被定义为外部变量,那么EA客户端可以直接设置这个外部变量的值,这一特性在盾博EA的调试和优化过程中很实用。
例如:
extern int a = 10;
extern color c = red;
转载请注明出处:https://www.daoctech.com/fxnews/2311.html
免责声明: 本文内容不代表道诚外汇官网观点,内容仅供参考,不构成投资建议。投资者若据此操作,风险自担。
