Compartir a través de


Tipos de escalar que se inicializan

Al inicializar los tipos escalares, el valor de la asignación-expresión se asigna a la variable.las reglas de conversión para la asignación aplican.(Vea conversiones de tipos para obtener información sobre reglas de conversión.)

Sintaxis

  • declaration:
    init-declarante-lista **;**optde los declaración-especificadores

  • declaración-especificadores:
    declaración-especificadores de almacenamiento-clase-especificador opt

    declaración-especificadores de especificador de tipo opt

    declaración-especificadores calificador de tipo opt

  • init-declarante-lista:
    init-declarante

    init-declarante de**,** de la init-declarante-lista

  • init-declarante:
    enumeration

    inicialización escalarde inicializadores /* For de**=** de declaradores *

  • inicializador:
    asignación-expresión

Puede inicializar las variables de cualquier tipo, siempre que se obedece las reglas siguientes:

  • Las variables declaradas en el nivel de archivo-ámbito pueden inicializar.Si no se inicializa una variable en el nivel externo, se inicializa en 0 de forma predeterminada.

  • Una expresión constante se puede utilizar para inicializar una variable global declarada conel almacenamiento-clase-especificadorde Estática.Las variables declaradas para ser Estática se inicializan cuando comienza la ejecución del programa.Si no se inicializa una variable global de Estática , se inicializa en 0 de forma predeterminada, y asigna cada miembro que tenga tipo de puntero a un puntero nulo.

  • Las variables declaradas con el especificador de clase de almacenamiento de Auto o de Registrarse inicialice cada vez que el control de ejecución pasa al bloque donde se declaran.Si omite un inicializador de la declaración de una variable de Auto o de Registrarse , el valor inicial de la variable es indefinido.Por valores automáticos y registro, el inicializador no se limita a ser una constante; puede ser cualquier expresión que contenga los valores previamente definido, incluso las llamadas de función.

  • Los valores iniciales de las declaraciones de variable externa y para todas las variables de Estática , es externo o interno, deben ser expresiones constantes.(Para obtener más información, vea expresiones constantes.) Puesto que la dirección de la variable externamente declarada o estática ningún es constante, se puede utilizar para inicializar Estática internamente declarado la variable de puntero.Sin embargo, la dirección de una variable de Auto no puede utilizarse como inicializador estático porque puede ser diferente en cada ejecución del bloque.Puede utilizar los valores constantes o variables para inicializar las variables de Auto y de Registrarse .

  • Si la declaración de un identificador ha bloqueado el ámbito, y el identificador tiene una vinculación externa, la declaración no puede tener una inicialización.

Ejemplos

los ejemplos siguientes muestran las inicializaciones:

int x = 10; 

La variable de entero x se inicializa en la expresión constante 10.

register int *px = 0;

El puntero px se inicializa en 0, genera un puntero “NULL”.

const int c = (3 * 1024);

Este ejemplo utiliza una expresión constante (3 * 1024) para inicializar c en un valor constante que no puedan modificar debido a la palabra clave de const .

int *b = &x;

Esta instrucción inicializa el puntero b con la dirección de otra variable, x.

int *const a = &z;

el puntero a se inicializa con la dirección de una variable denominada z.Sin embargo, dado que se especifica para ser const, a variable sólo se puede inicializar, nunca se modificó.Él siempre puntos en la misma ubicación.

int GLOBAL ;

int function( void )
{
    int LOCAL ;
    static int *lp = &LOCAL;   /* Illegal initialization */
    static int *gp = &GLOBAL;  /* Legal initialization   */
    register int *rp = &LOCAL; /* Legal initialization   */
}

La variable global GLOBAL se declara en el nivel externo, por lo que tiene duración global.La variable local LOCAL tiene una clase de almacenamiento de Auto y sólo tiene una dirección durante la ejecución de la función en la que se declara.Por consiguiente, al intentar inicializar la variable de puntero lp de Estática con la dirección de LOCAL no está permitido.La variable de puntero gp de Estática se puede inicializar la dirección de GLOBAL porque esa dirección es siempre la misma.De igual forma, *rp se puede inicializar porque rp es una variable local y un inicializador que no es una constante.Cada vez que se entra en el bloque, LOCAL tiene una nueva dirección, que se asigna a rp.

Vea también

Conceptos

Inicialización