📜  数组超出范围 mql4 (1)

📅  最后修改于: 2023-12-03 15:10:22.928000             🧑  作者: Mango

数组超出范围 MQL4

当我们在MQL4中使用数组时,有时候会发现程序会报错,错误信息通常会显示“数组超出范围”。这个错误通常会发生在我们试图访问一个不在数组范围内的元素时。

什么是数组超出范围?

在MQL4中,数组是一组有序的元素,每个元素都有一个唯一的索引值。我们可以使用索引值来访问数组中的每个元素。索引值从0开始,最大值为数组大小减1。如果我们试图访问的索引超出了这个范围,就会发生“数组超出范围”的错误。

例如,如果我们有一个长度为3的数组,它的索引范围是0到2。如果我们尝试访问索引3或更大的值,程序就会报错。

double array[3]; // 定义一个长度为3的数组
double value = array[3]; // 尝试访问索引为3的元素,会导致"数组超出范围"的错误
如何避免这个错误?

为了避免出现“数组超出范围”的错误,在编写MQL4代码时,我们需要确保我们只访问数组中存在的元素。

一种方法是使用循环来迭代数组中每个元素,这样我们就可以确保我们不会访问超出数组范围的元素。例如,在下面的代码中,我们使用一个for循环来计算一个数组中所有元素的总和:

double array[3] = {1.0, 2.0, 3.0}; // 定义一个长度为3的数组
double sum = 0.0;
 
for(int i = 0; i < ArraySize(array); i++) // 迭代数组中的每个元素
{
    sum += array[i]; // 计算数组元素的总和
}

另一个避免“数组超出范围”的方法是使用标准库中的函数,例如ArraySize函数。这个函数可以返回数组的大小,确保我们不会访问超出数组范围的元素。例如,在下面的代码中,我们使用ArraySize函数获取数组的大小,并使用这个大小来遍历数组:

double array[3] = {1.0, 2.0, 3.0}; // 定义一个长度为3的数组
double sum = 0.0;
 
for(int i = 0; i < ArraySize(array); i++) // 根据数组大小迭代数组中的每个元素
{
    sum += array[i]; // 计算数组元素的总和
}
结论

“数组超出范围”是MQL4中常见的错误之一,通常会发生在我们试图访问一个不在数组范围内的元素时。为了避免这个错误,我们可以使用循环来迭代数组中的每个元素,或者使用ArraySize函数来获取数组的大小。这些方法可以确保我们不会访问超出数组范围的元素。