Как static меняет свойства глобальной переменной

У переменной на уровне пространства имён static меняет внешнее связывание на внутреннее. Длительность хранения не меняется: глобальная переменная и без static существует всё время работы программы.

Короткий ответ

Что ответить на собеседовании

У переменной на уровне пространства имён static меняет внешнее связывание на внутреннее. Длительность хранения не меняется: глобальная переменная и без static существует всё время работы программы.

Подробный разбор

Ответ с пояснениями

Условие

Опишите, какие изменения произойдут в области видимости и времени жизни глобальной переменной, если к её объявлению добавить ключевое слово static.

# include <iostream>

int gVar; // добавить static и проанализировать влияние

Объясните, как изменятся связь переменной с другими единицами трансляции и её период существования в программе.

Ответ

У переменной на уровне пространства имён static меняет внешнее связывание на внутреннее. Длительность хранения не меняется: глобальная переменная и без static существует всё время работы программы.

Имя static int gVar; обозначает отдельный объект внутри своей единицы трансляции. Объявление extern int gVar в другом исходном файле не позволяет обратиться именно к нему.

Нулевая инициализация для показанного int сохраняется. Если поместить такое определение в заголовок, каждый включивший его .cpp получит собственный экземпляр; это не общая переменная для всей программы. Область видимости и связывание — связанные, но разные понятия.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее