Initialisation des Variables

Toute variable peut être initialisée pendant sa définition. Si une variable n'est pas initialisée explicitement, elle peut avoir n'importe quelle valeur au démarrage. L'initialisation implicite n'est pas utilisée.

Les variables globales et statiques ne peuvent être initialisées que par une constante du type correspondant ou par une expression constante. Les variables locales peuvent être initialisées par n'importe quelle expression, et pas seulement par une constante.

L'initialisation des variables globales et des variables statiques n'est effectuée qu'une seule fois. L'initialisation des variables locales est effectuée à chaque appel des fonctions correspondantes.

Exemples :

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 } };
//--- de tetris
int    right[4]={WIDTH_IN_PIXELS+VERT_BORDER,WIDTH_IN_PIXELS+VERT_BORDER,
                 WIDTH_IN_PIXELS+VERT_BORDER,WIDTH_IN_PIXELS+VERT_BORDER};
//--- initialisation de tous les champs de la structure avec la valeur zéro
MqlTradeRequest request={};

La liste des valeurs des éléments du tableau doit être placée entre parenthèses. Les suites d'initialisation manquantes sont considérées comme égales à 0.

Si la taille du tableau initialisé n'est pas spécifiée, elle est déterminée par le ompilateur, suuvant la taille de la suite d'initialisation.

Exemples :

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},{},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]);
  }

 
Pour les variables de type structure, l'initialisation partielle est autorisée, de même que pour les tableaux statiques (avec une taille définie implicitement). Vous pouvez initialiser un, ou plus, élément d'une structure ou d'un tableau, les éléments restants seront initialisés avec zéro dans ce cas.

Voir aussi

Types de Données, Encapsulation et Extension des Types, Portée de Visibilité et Cycle de Vie des Variables, Créer et Supprimer des Objets