Inicialización (programación) - Initialization (programming)

En programación de computadoras , la inicialización (o inicialización) es la asignación de un valor inicial para un objeto de datos o una variable. La forma en que se realiza la inicialización depende del lenguaje de programación , así como del tipo, clase de almacenamiento, etc., de un objeto a inicializar. Las construcciones de programación que realizan la inicialización se denominan normalmente inicializadores y listas de inicializadores . La inicialización es distinta de (y está precedida por) la declaración , aunque las dos a veces se pueden combinar en la práctica. El complemento de la inicialización es la finalización , que se utiliza principalmente para objetos, pero no para variables.

La inicialización se realiza incorporando estáticamente el valor en tiempo de compilación o por asignación en tiempo de ejecución . Una sección de código que realiza dicha inicialización se conoce generalmente como "código de inicialización" y puede incluir otras funciones de una sola vez, como abrir archivos; en la programación orientada a objetos , el código de inicialización puede ser parte de un constructor (método de clase) o un inicializador (método de instancia). Establecer una ubicación de memoria en ceros hexadecimales también se conoce a veces como "borrar" y a menudo se realiza mediante una instrucción o exclusiva (ambos operandos que especifican la misma variable), a nivel de código de máquina , ya que no requiere acceso adicional a la memoria.

Familia de lenguas C

Inicializador

En C / C99 / C ++, un inicializador es una parte opcional de un declarador . Consiste en el carácter '=' seguido de una expresión o una lista de expresiones separadas por comas colocadas entre corchetes (llaves). La última lista a veces se denomina "lista de inicializadores" o "lista de inicialización" (aunque el término "lista de inicializadores" está formalmente reservado para la inicialización de miembros de clase / estructura en C ++; ver más abajo ). Una declaración que crea un objeto de datos, en lugar de simplemente describir su existencia, se denomina comúnmente definición .

A muchos les resulta conveniente hacer una distinción entre los términos "declaración" y "definición", como en la frase comúnmente vista "la distinción entre una declaración y una definición ...", lo que implica que una declaración simplemente designa un objeto de datos (o función ). De hecho, según el estándar C ++ , una definición es una declaración. Aún así, el uso de "declaraciones y definiciones", aunque formalmente incorrecto, es común. Aunque todas las definiciones son declaraciones, no todas las declaraciones son definiciones.

Ejemplos de C:

int i = 0;
int k[4] = {0, 1};
char tx[3] = 'a';
char ty[2] = 'f';
struct Point {int x; int y;} p = { .y = 13, .x = 7 };

Ejemplos de C ++:

int i2(0);
int j[2] = {rand(), k[0]};
MyClass* xox = new MyClass(0, "zaza");
point q = {0, i + 1};

Lista de inicializadores

En C ++, un constructor de una clase / estructura puede tener una lista de inicializadores dentro de la definición pero antes del cuerpo del constructor. Es importante tener en cuenta que cuando utiliza una lista de inicialización, los valores no se asignan a la variable. Están inicializados. En el siguiente ejemplo, 0 se inicializa en re e im. Ejemplo:

struct IntComplex {
  IntComplex() : re(0), im(0) {}

  int re;
  int im;
};

Aquí, la construcción  : re(0), im(0)es la lista de inicializadores.

A veces, el término "lista de inicializadores" también se utiliza para referirse a la lista de expresiones en la matriz o el inicializador de estructura.

C ++ 11 proporciona un concepto más poderoso de listas de inicializadores , por medio de una plantilla, llamada std :: initializer_list .

Inicialización predeterminada

La inicialización de datos puede ocurrir sin una sintaxis explícita en un programa para hacerlo. Por ejemplo, si las variables estáticas se declaran sin un inicializador, las de tipos de datos primitivos se inicializan con el valor cero del tipo correspondiente, mientras que los objetos estáticos de tipo de clase se inicializan con sus constructores predeterminados .

Ver también

Referencias