внешние переменные инициализируются их значением по умолчанию?

Я знаю, что если массив char является глобальным или статическим локальным, его элементы инициализируются в \ 0, но что, если массив char является внешней переменной?

3

Решение

Если переменная была объявлена ​​как extern, но является неглобальной, она также получает такую ​​же обработку инициализации. Например

namespace A { extern int x; int x;}

Эта неглобальная переменная будет инициализирована нулем. Все переменные области имен пространства получают эту обработку.

3

Другие решения

Переменная extern — это просто объявление. Переменная инициализируется в модуле, который ее определил. Поскольку в этом модуле переменная является глобальной, она инициализируется нулями.

2

extern это только декларация.
Будет ли переменная инициализирована, зависит от определение.

Кроме того, значение переменной будет зависеть от типа инициализации. Стандарт C ++ определяет 3 типа инициализации:

  • Zero-Initialize
  • Default-Initialize
  • Значение-Initialize

Стандарт C ++ 03 8.5 / 5 удачно определяет каждый.

Хорошо для чтения:

В чем разница между определением и декларацией?

2

extern Ключевое слово только объявляет, что переменная существует, но не определяет ее значение.
из-за глобальной области видимости он инициализирован до 0

1
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector