En programación informática , la inicialización consiste en asignar un valor inicial a un objeto de datos o variable . La forma en que se realiza la inicialización depende del lenguaje de programación , así como del tipo, la clase de almacenamiento, etc., del objeto que se va 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 la declaración (y la precede) , aunque en la práctica a veces se confunden. 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 mediante la inserción estática del valor en tiempo de compilación o mediante la 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 que se ejecutan una sola vez, como la apertura de archivos; en la programación orientada a objetos , el código de inicialización puede formar parte de un constructor (método de clase) o de un inicializador (método de instancia). Asignar ceros hexadecimales a una ubicación de memoria también se conoce a veces como "borrar" y a menudo se realiza mediante una instrucción exclusiva OR (ambos operandos especifican la misma variable), a nivel de código 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 llaves. Esta última lista a veces se denomina "lista de inicialización" (aunque el término "lista de inicialización" está formalmente reservado para la inicialización de miembros de clases/estructuras en C++; véase 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 establecer una distinción entre los términos «declaración» y «definición», como en la frase común «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 una función). De hecho, según el estándar de C++ , una definición es una declaración. Aun así, el uso de «declaraciones y definiciones», aunque formalmente incorrecto, es común. [ 1 ] Si bien todas las definiciones son declaraciones, no todas las declaraciones son definiciones.
Ejemplos en 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 i3 ( 0 ); int i4 { 0 }; int j [ 2 ] = { rand (), k [ 0 ]}; MyClass * xox = new MyClass ( 0 , "zaza" ); Point q = { 0 , i + 1 };Listas de inicialización de miembros
En C++, el constructor de una clase/estructura puede tener una lista de inicialización de miembros dentro de la definición, pero antes del cuerpo del constructor. Cuando se utiliza una lista de inicialización, los valores no se asignan a la variable, sino que se inicializan. En el siguiente ejemplo, rey imse inicializan con los parámetros del constructor: Ejemplo:
clase GaussianInteger { privado : int re ; int im ; público : GaussianInteger ( int re = 0 , int im = 0 ) : re { re }, im { im } {} };Aquí, la estructura re{re}, im{im}es la lista de inicialización.
En ocasiones, el término "lista de inicialización" también se utiliza para referirse a la lista de expresiones en el inicializador de la matriz o estructura.
C++11 proporciona un concepto más potente de listas de inicialización , mediante 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, entonces las de tipos de datos primitivos se inicializan con el valor cero del tipo correspondiente, mientras que los objetos estáticos de tipo clase se inicializan con sus constructores predeterminados .
Véase también
- Declaración (programación informática)
- Proceso de finalización y patrón de finalización relacionado
- Vida útil del objeto
Referencias
- Estructuras de programación
- Variable (informática)