Sobes.tech
Junior — Middle
106

Quelle est la différence entre une variable globale standard et une variable statique dans le contexte de la portée et de la durée de vie?

Réponse de l'IA

sobes.tech IA

Глобальная переменная в C/C++ объявляется вне всех функций и доступна во всех файлах, если объявлена с внешним связыванием (extern). Время жизни глобальной переменной — от запуска программы до её завершения.

Статическая переменная может быть двух видов:

  1. Статическая переменная на уровне файла (static глобальная) — объявлена вне функций с ключевым словом static. Она видна только в пределах этого файла (область видимости ограничена файлом), но время жизни у неё всё равно от запуска до завершения программы.

  2. Статическая переменная внутри функции (static локальная) — объявлена внутри функции с static. Она сохраняет своё значение между вызовами функции, но видна только внутри этой функции. Время жизни — от запуска программы до завершения, но область видимости — локальная.

Пример:

int global_var = 0;          // глобальная переменная, видна во всех файлах
static int file_static_var;  // статическая переменная файла, видна только в этом файле

void func() {
    static int func_static_var = 0; // статическая локальная переменная
    func_static_var++;
}

Итого:

  • Глобальная переменная: видна во всех файлах (если extern), время жизни — вся программа.
  • Статическая переменная файла: видна только в файле, время жизни — вся программа.
  • Статическая локальная переменная: видна только в функции, время жизни — вся программа.