Я знаю, что если массив char является глобальным или статическим локальным, его элементы инициализируются в \ 0, но что, если массив char является внешней переменной?
Если переменная была объявлена как extern, но является неглобальной, она также получает такую же обработку инициализации. Например
namespace A { extern int x; int x;}
Эта неглобальная переменная будет инициализирована нулем. Все переменные области имен пространства получают эту обработку.
Переменная extern — это просто объявление. Переменная инициализируется в модуле, который ее определил. Поскольку в этом модуле переменная является глобальной, она инициализируется нулями.
extern
это только декларация.
Будет ли переменная инициализирована, зависит от определение.
Кроме того, значение переменной будет зависеть от типа инициализации. Стандарт C ++ определяет 3 типа инициализации:
Стандарт C ++ 03 8.5 / 5 удачно определяет каждый.
Хорошо для чтения:
extern
Ключевое слово только объявляет, что переменная существует, но не определяет ее значение.
из-за глобальной области видимости он инициализирован до 0