int j[1];
Alert("Размер массива из одного элемента без списка инициализации = ", sizeof(j), " Массив динамический? ", ArrayIsDynamic(j));
int k[];
Alert("Размер структуры для динамического массива = ", sizeof(k), " Массив динамический? ",ArrayIsDynamic(k));
int g[] = {0};
Alert("Размер массива из одного элемента со списком инициализации = ", sizeof(g), " Массив динамический? ",ArrayIsDynamic(g));
好了,我走了。:) 我也在航站楼外。
检查过的元素 - 试图使用ArrayResize(...)。
尝试使用ArrayResize(...)是很基本的。
好吧,这里有错误。Metaquotes的公民们,请注意了!!!。
错误的本质:当一个初始化列表(int g[] = {0}; )被用于一个数组时,sizeof(g)函数给出了struct MqlArrayObject的大小(为一个动态数组创建)。错误的本质:当一个初始化列表(int g[] = {0}; )被用于一个数组时,sizeof(g)函数打印了struct MqlArrayObject的大小(为一个动态数组创建)。
而ArrayIsDinamic()说,数组是静态的?
j - 静态
k - 动态
g - 静态
....
g - 静态
好吧,这里有错误。
错误的本质:当初始化列表(int g[] = {0}; )被用于一个数组时,函数sizeof(g)给出了struct MqlArrayObject(为动态数组创建)的大小。谢谢你的留言,错误已纠正。
伊利亚斯!!!
它究竟是如何被修复的? 在声明 中被解析的数组 是否变得动态(可调整大小)?
还是完全静止?
还是完全静止?
当然,这是一个静态代码。
哦,现在我明白了。
Renat,我有一个长期的建议,就是关于这个问题。 请为数组做一个命名的类型,至少对于静态数组(所有其他类型已经有了)。
也就是说,你可以声明,例如:typedef Int8 = int[8]; 。
这个问题的代价是可以将一维(2,3维)数组,也就是更大尺寸数组中的子数,传递到函数中。
也就是说,如果你进一步声明:Int8 arr[...],你可以将arr[i] 传入函数func(Int8 &a) {...}。
目前,我不得不在mql5中执行很多额外的操作,并写了很多难看的代码,因为不可能把子数传到函数中。
我不写serviced,因为这个话题在我看来是有争议的。