Инициализация на променливи - Променливи - Основи на езика - Справочник за MQL4
Всяка променлива може да бъде инициализирана, когато е дефинирана. Ако променливата не е изрично инициализирана, тогава стойността, съхранена в тази променлива, може да бъде всякаква. Няма скрита инициализация.
Глобалните и статичните променливи могат да бъдат инициализирани само с константа от съответния тип или константен израз. Локалните променливи могат да бъдат инициализирани с всеки израз, не само с константа.
Инициализирането на глобални и статични променливи се извършва веднъж. Локалните променливи се инициализират при всяко извикване на съответните функции.
int n = 1; низ s = "здравей"; двойно f[] = < 0.0, 0.236, 0.382, 0.5, 0.618, 1.0 >; int a[4][4] = < , , , >; //--- от Tetris int right[4]= WIDTH_IN_PIXELS+VERT_BORDER,WIDTH_IN_PIXELS+VERT_BORDER>; //--- инициализация на всички полета на структурата с нулева стойност MqlTradeRequest request=;
Списъкът със стойности на елемента на масива трябва да бъде ограден във фигурни скоби. Пропуснатите инициализиращи последователности се считат за равни на 0. Трябва да има поне една стойност в инициализиращата последователност: първият елемент от съответната структура или масив се инициализира с тази стойност, липсващите елементи се считат за равни на нула.
Ако размерът на инициализирания масив не е посочен, тогава той се определя от компилатора въз основа на размера на инициализиращата последователност. Многомерните масиви не могат да се инициализират с едномерна последователност (последователност без допълнителни фигурни скоби), освен в един случай – когато е посочен само един елемент за инициализация (обикновено нула).
Масиви (включително тези, декларирани налокално ниво) може да се инициализира само от константи.
struct str3 < int ниска_част; int висока_част; >; struct str10 < str3 s3; двойно d1[10]; int i3; >; void OnStart() < str10 s10_1=,,100>; str10 s10_2=,,100>; str10 s10_3=,>; //--- Печат ( "1. s10_1.d1[5] = ",s10_1.d1[5]); Печат( "2. s10_2.d1[5] = ",s10_2.d1[5]); Печат( "3. s10_3.d1[5] = ",s10_3.d1[5]); Печат( "4. s10_3.d1[0] = ",s10_3.d1[0]); >
За променливи от структурен тип е разрешена частична инициализация, същото важи и за статични масиви (с изрично указан размер). Един или няколко първи елемента на структура или масив могат да бъдат инициализирани, останалите елементи в този случай ще бъдат инициализирани с нули.