Objeto de un array dinámico

Arrays dinámicos

Se permite declarar un array que no no supere 4 dimensiones. Al declarar una matriz dinámica (matriz sin valor expreso en el primer par de los corchetes), el compilador crea automáticamente una variable de la estructura indicada más arriba (objeto de matriz dinámica) y proporciona el código para una inicialización correcta.

Los arrays dinámicos se liberan automáticamente, al salir fuera de los límites de la visibilidad del bloque donde han sido declarados.

Ejemplo:

double matrix[][10][20]; // array dinámica de 3 dimensiones
ArrayResize(matrix,5);   // indicamos el tamaño de la primera dimensión

 
Arrays estáticos

Si todas las dimensiones significativas de un array se indican de una manera explícita, el compilador de antemano distribuye el espacio necesario de la memoria. Este array se llama array estático. No obstante, el compilador distribuye adicionalmente la memoria para el objeto del array dinámico. Este objeto está vinculado con el búfer estático distribuido previamente (sector de memoria para almacenamiento de la matriz).

La creación de un objeto del array dinámico está condicionado a la posible necesidad de transmitir dicho array estático como un parámetro a alguna función.

Ejemplos:

double stat_array[5]; // array dinámico de 1 dimensión
some_function(stat_array);
...
bool some_function(double& array[])
  {
   if(ArrayResize(array,100)<0return(false);
   ...
   return(true);
  }

 
Arrays como partes de las estructuras

Al declarar un array estático como un elemento de una estructura, el objeto del array dinámico no se crea. Esto se hace para la compatibilidad de las estructuras de datos que se utilizan en Windows API.

Sin embargo, los arrays estáticos declarados como elementos de las estructuras, también se puede pasar a las funciones MQL5. En este caso, al pasar el parámetro va a crearse un objeto de un array dinámico temporal vinculado con el array estático — elemento de la estructura.

Véase también

Operaciones con arrays, Inicialización de variables, Visibilidad y tiempo de vida de variables, Creación y eliminación de objetos