Рубрики

Инициализация статических переменных в C

В C статические переменные могут быть инициализированы только с использованием константных литералов. Например, следующая программа завершается неудачно при компиляции.

#include<stdio.h>

int initializer(void)

{

    return 50;

}

  

int main()

{

    static int i = initializer();

    printf(" value of i = %d", i);

    getchar();

    return 0;

}

Если мы изменим программу на следующую, то она будет работать без ошибок.

#include<stdio.h>

int main()

{

    static int i = 50;

    printf(" value of i = %d", i);

    getchar();

    return 0;

}

Причина этого проста: все объекты со статической продолжительностью хранения должны быть инициализированы (установлены их начальные значения) до начала выполнения main (). Таким образом, значение, которое не известно во время трансляции, не может использоваться для инициализации статических переменных.

Рекомендуемые посты:

Инициализация статических переменных в C

0.00 (0%) 0 votes