MetaTrader 5 herunterladen

Initialisierung der Variablen

Jede Variable kann bei der Definition initialisiert werden. Wenn explizite Initialisierung der Variable nicht durchgefuhrt wird, kann der Wert, gespeichert in der Variable, ganz verschiden sein. Implizite Initialisierung wird nicht durchgeführt.

Globale und statische Variablen können nur von Konstante des entsprechenden Typs oder Konstantausdruck initialisiert werden. Lokale Variablen können von jedem Ausdruck initialisiert werden, nicht nur von der Konstante.

Initialisierung on globalen und statischen Variablen wird einmalig durchgeführt. Initialisierung lokaler Variablen wird jedesmal beim Aufruf entsprechender Funktionen durchgeführt.

Beispiele:

int    n       = 1;
string s       = "hello";
double f[]     = { 0.0, 0.236, 0.382, 0.5, 0.618, 1.0 };
int    a[4][4] = { {1, 1, 1, 1}, {2, 2, 2, 2}, {3, 3, 3, 3}, {4, 4, 4, 4 } };
//--- aus Tetris
int    right[4]={WIDTH_IN_PIXELS+VERT_BORDER,WIDTH_IN_PIXELS+VERT_BORDER,
                 WIDTH_IN_PIXELS+VERT_BORDER,WIDTH_IN_PIXELS+VERT_BORDER};
//--- Initialisierung aller Felder in der Struktur mit der NULL-Werte
MqlTradeRequest request={0};

Liste von Werten der Feldelemente muss in geschweiften Klammern stehen. Ausgelassene initialisierende Folgen gelten als die der Null gleichen. In der initialisierenden Folge muss mindestens ein Wert geben: von diesem Wert wird das erste Element entsprechender Struktur oder des Feldes initialisiert, fehlende Elemente gelten als die der Null gleichen.

Wenn die Größe des zu initialisierten Feldes nicht angegeben wird, wird die vom Compilierer festgestellt, ausgehend von der groesse der initialisierenden Folge. Vieldimensionale Felder können nicht von eindimensionaler Folge (Folge ohne zusätzliche geschweifte Klammern) initialisiert werden, ausser einem Fall - wenn nur ein initialisiertes Element angegeben wird (in der Regel Null).

Felder (darunter auch auf dem lokalen Niveau erklärt) können nur von Konstanten initialisiert werden.

Beispiele:

struct str3
  {
   int               low_part;
   int               high_part;
  };
struct str10
  {
   str3              s3;
   double            d1[10];
   int               i3;
  };
void OnStart()
  {
   str10 s10_1={{1,0},{1.0,2.1,3.2,4.4,5.3,6.1,7.8,8.7,9.2,10.0},100};
   str10 s10_2={{1,0},{0},100};
   str10 s10_3={{1,0},{1.0}};
//---
   Print("1.  s10_1.d1[5] = ",s10_1.d1[5]);
   Print("2.  s10_2.d1[5] = ",s10_2.d1[5]);
   Print("3.  s10_3.d1[5] = ",s10_3.d1[5]);
   Print("4.  s10_3.d1[0] = ",s10_3.d1[0]);
 ;}

 
Für Variablen des Typs Strukturen ist teilweise Initialisierung erlaubt, gilt dies auch für statische Arrays (mit einer expliziten Größe). Sie können eine oder mehrere der ersten Elemente einer Struktur oder Array initialisieren, werden die restlichen Elemente in diesem Fall mit Nullen initialisiert werden.

Sehen Sie auch

Datentypen, Inkapsulation und Erweiterungsfaehigkeit der Typen, Sichtbereich und Lebensdauer der Variablen, Erzeugung und Entfernung der Objekte