Русский

Справочник MQL4 Операции с массивами ArrayInitialize

ArrayInitialize

Инициализирует числовой массив указанным значением.

Для инициализации массива типа char

int  ArrayInitialize(
   char    array[],     // инициализируемый массив
   char    value        // значение, которое будет установлено
   );

Для инициализации массива типа short

int  ArrayInitialize(
   short   array[],     // инициализируемый массив
   short   value        // значение, которое будет установлено
   );

Для инициализации массива типа int

int  ArrayInitialize(
   int     array[],     // инициализируемый массив
   int     value        // значение, которое будет установлено
   );

Для инициализации массива типа long

int  ArrayInitialize(
   long    array[],     // инициализируемый массив
   long    value        // значение, которое будет установлено
   );

Для инициализации массива типа float

int  ArrayInitialize(
   float   array[],     // инициализируемый массив
   float   value        // значение, которое будет установлено
   );

Для инициализации массива типа double

int  ArrayInitialize(
   double  array[],     // инициализируемый массив
   double  value        // значение, которое будет установлено
   );

Для инициализации массива типа bool

int  ArrayInitialize(
   bool    array[],     // инициализируемый массив
   bool    value        // значение, которое будет установлено
   );

Для инициализации массива типа uint

int  ArrayInitialize(
   uint    array[],     // инициализируемый массив
   uint    value        // значение, которое будет установлено
   );

Параметры

array[]

[out]  Числовой массив, который нужно инициализировать.

value

[in]  Новое значение, которое нужно установить всем элементам массива.

Возвращаемое значение

Количество инициализированных элементов.

Примечание

Функция ArrayResize() позволяет задать для массива размер с некоторым запасом для его будущего увеличения без физического перераспределения памяти. Это сделано для улучшения быстродействия, так как операции по распределению памяти являются достаточно медленными.

Инициализация массива выражением ArrayInitialize(array, init_val) не означает инициализацию этим же значением и элементов резерва, выделенного для этого массива. При последующих увеличениях размера массива array функцией ArrayResize() в пределах текущего резерва, в конец массива добавляются элементы, значения которых не определены и, чаще всего, не равны init_val.

Пример:

void OnStart()
  {
//--- динамический массив
   double array[];
//--- зададим размер массива для 100 элементов и зарезервируем еще буфер в 10 элементов
   ArrayResize(array,100,10);
//--- инициализируем элементы массива значением EMPTY_VALUE=DBL_MAX
   ArrayInitialize(array,EMPTY_VALUE);
   Print("Значения последних 10 элементов массива после инициализации");
   for(int i=90;i<100;i++) printf("array[%d] = %G",i,array[i]);
//--- увеличим размер массива на 5 элементов
   ArrayResize(array,105);
   Print("Значения последних 10 элементов массива после ArrayResize(array,105)");
//--- значения последних 5 элементов были получены из буфера резерва
   for(int i=95;i<105;i++) printf("array[%d] = %G",i,array[i]);
  }