Inicialización de variables

Cualquier variable puede ser inicializada durante la definición. Si la variable no es inicializada explícitamente, el valor almacenado en esta variable puede ser cualesquiera. La inicialización implícita no se realiza.

Las variables globales y estáticas pueden ser inicializadas sólo por la constante del tipo correspondiente o por una expresión constante. Las variables locales pueden ser inicializadas por cualquier expresión, y no sólo por una constante.

La inicialización de las variables globales y estáticas se realiza sólo una vez. La inicialización de las variables locales se realiza cada vez al llamar a la función correspondiente.

Ejemplos:

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};
//--- inicialización de todos los campos de la estructura con valores cero
MqlTradeRequest request={};

La lista de valores de los elementos del array tiene que encerrarse dentro de las llaves. Las sucesiones inicializadoras perdidas se consideran iguales a 0.

Si el tamaño del array inicializado no está especificado, éste es determinado por el compilador basándose en el tamaño de la sucesión inicializadora.

Ejemplos:

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

 
Para las variables del tipo de estructuras se permite una inicialización parcial, lo mismo se refiere a los arrays estáticos (con un tamaño fijado explícitamente). Se puede inicializar uno o varios primeros elementos de la estructura o array, el resto de los elementos en este caso serán inicializados con ceros.

Véase también

Tipos de datos, Encapsulación y extensión de tipos, Visibilidad y tiempo de vida de variables, Creación y eliminación de objetos