Программирование.
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, служит ссылкой на переменную с таким же именем, определенную глобально в каком-либо из исходных файлов программы. Цель подобного объявления заключается в том, чтобы сделать определение переменной глобального уровня видимым внутри блока.