Inicialización de variables estáticas en C

En C, las variables estáticas solo se pueden inicializar usando literales constantes. Por ejemplo, el siguiente programa falla en la compilación.

#include<stdio.h>
int initializer(void)
{
    return 50;
}
  
int main()
{
    static int i = initializer();
    printf(" value of i = %d", i);
    getchar();
    return 0;
}

Si cambiamos el programa a siguiente, entonces funciona sin ningún error.

#include<stdio.h>
int main()
{
    static int i = 50;
    printf(" value of i = %d", i);
    getchar();
    return 0;
}

La razón de esto es simple: todos los objetos con duración de almacenamiento estático deben inicializarse (establecerse en sus valores iniciales) antes de que comience la ejecución de main(). Por lo tanto, un valor que no se conoce en el momento de la traducción no se puede utilizar para la inicialización de variables estáticas.

Gracias a Venki y Prateek por su contribución.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *