跳至内容

Dynamic Array Object

动态数组对象

动态数组

最多可以声明4维的数组。当声明动态数组(即第一对方括号中值未指定的数组)时,编译器会自动创建一个上述结构的变量(动态数组对象),并提供正确的初始化代码。

当动态数组超出其声明块的可见区域时,它会自动释放内存。

示例:

double matrix[][10][20]; // 3-dimensional dynamic array
ArrayResize(matrix,5);   // Set the size of the first dimension

静态数组

当所有重要数组维度都明确指定时,编译器会预分配所需的内存大小。这种数组称为静态数组。不过,编译器还会为动态数组对象分配额外的内存,该对象与预分配的静态缓冲区(存储数组的内存部分)相关联。

创建动态数组对象是因为可能需要将这种静态数组作为参数传递给某些函数。

示例:

double stat_array[5]; // 1-dimensional static array
some_function(stat_array);
...
bool some_function(double& array[])
  {
   if(ArrayResize(array,100)<0) return(false);
   ...
   return(true);
  }

结构体中的数组

当静态数组作为结构体的成员声明时,不会创建动态数组对象。这样做是为了确保Windows API中使用的数据结构具有兼容性。

然而,作为结构体成员声明的静态数组也可以传递给MQL5函数。在这种情况下,传递参数时会创建一个临时动态数组对象。这个对象与结构体的静态数组成员相关联。

另请参阅

数组函数, 变量的初始化, 变量的可见范围和生命周期, 对象的创建和删除

最后更新于