1.6.7 变量初始化-MQL5编程参考文档-峰汇在线
诚信为本
量力而为
当前位置:峰汇在线 > MQL语言 > MQL5编程参考文档 > 正文

1.6.7 变量初始化

下定义时可以初始化任何变量。如果变量没有显性初始化,其值可为任何值。不可使用隐性初始化。

全局和静态变量仅可以通过相关的常量或者常量表达式初始化。全局变量仅可以通过表达式初始化(不是常量)。

全局变量和静态变量初始化仅可以执行一次。局部变量每次调用相关函数都进行初始化。

示例:

int n = 1;
string s = "hello";
double f[] = { 0.0, 0.236, 0.382, 0.5, 0.618, 1.0 };
int a[4][4] = { {1, 1, 1, 1}, {2, 2, 2, 2}, {3, 3, 3, 3}, {4, 4, 4, 4 } };
//--- 来自俄罗斯方块
int right[4]={WIDTH_IN_PIXELS+VERT_BORDER,WIDTH_IN_PIXELS+VERT_BORDER,
WIDTH_IN_PIXELS+VERT_BORDER,WIDTH_IN_PIXELS+VERT_BORDER};
//--- 零值结构所有字段的初始化
MqlTradeRequest request={0};

数组元素值列表必须被附寄在括号内。初始化省去的值被考虑为零。初始化至少有一个值:即相关结构和数组第一元素的初始化值,缺失的元素考虑为零。

如果没有指定初始化数组大小,则由基于初始化序列大小的编译器决定。多维数组不同用一维序列初始化(没有另外括号的序列),只有仅指定一个初始化元素时除外(零,通常)。

数组(包括局部变量公开的)只能以常数初始化。

示例:

struct str3
{
int low_part;
int high_part;
};
struct str10
{
str3 s3;
double d1[10];
int i3;
};
void OnStart()
{
str10 s10_1={{1,0},{1.0,2.1,3.2,4.4,5.3,6.1,7.8,8.7,9.2,10.0},100};
str10 s10_2={{1,0},{0},100};
str10 s10_3={{1,0},{1.0}};
//---
Print("1. s10_1.d1[5] = ",s10_1.d1[5]);
Print("2. s10_2.d1[5] = ",s10_2.d1[5]);
Print("3. s10_3.d1[5] = ",s10_3.d1[5]);
Print("4. s10_3.d1[0] = ",s10_3.d1[0]);
}

对于结构类型,允许变量分批的初始化,静态数组(隐式地设置大小)也一样。您可以初始化一个或多个结构或数组的最初元素,在这种情况下,其他元素将被零初始化。

打赏
版权所有转载请注明标题及链接:峰汇在线 » 1.6.7 变量初始化
上一篇:
下一篇:
分享到: 更多 (0)

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

支付宝扫一扫打赏

微信扫一扫打赏