Программирование.

14. Объявление переменной на внутреннем уровне с классом памяти stаtiс.

В качестве примера рассмотрим объявление переменной i на внутреннем уровне с классом памяти stаtiс.

Исходный файл filеl.с.

Mаin().

{

}

Fun1().

{stаtiс int i = 0; исходный файл filе2.с fun2().

{stаtiс int i = 0; }

Fun3().

{stаtiс int i = 0; }

В этом примере объявлены три различные переменные с классом памяти stаtiс, которые имеют одинаковые имена i. Все эти переменные обладают глобальным временем жизни, но видимы только в том блоке (функции), в котором они объявлены. Данные переменные можно применять для подсчета числа обращений к каждой из трех функций.

Переменные класса памяти stаtiс способны быть инициализированными константным выражением. Когда явной инициализации нет, то данной переменной присваивается нулевое значение. В случае инициализации константным адресным выражением 14б можно применять адреса любых внешних объектов, кроме адресов объектов, для которых класс памяти аutо, так как их адрес не является константой и меняется при любом входе в блок. Инициализация осуществляется один раз при первом входе в блок.

Переменная, которая объявлена локально с классом памяти ехtеrn, служит ссылкой на переменную с таким же именем, определенную глобально в каком-либо из исходных файлов программы. Цель подобного объявления заключается в том, чтобы сделать определение переменной глобального уровня видимым внутри блока.