В предыдущем (как, впрочем, и в последующем) изложении для объявления различий между идентификаторами, объявленными вне блока и внутри его, используются, термины глобальная переменная и локальная переменная. Однако в языке C предусмотрено более тонкое подразделение этих двух широких категорий. Стандарт С определяет четыре типа областей видимости[1] идентификаторов:
Тип области видимости | Область видимости |
---|---|
область действия — файл (имя, объявленное вне всех блоков и классов, можно использовать в транслируемом файле, содержащем это объявление; такие имена называются глобальными (global)) | Начинается в начале файла (единица трансляции) и кончается в конце файла. Такую область видимости имеют только идентификаторы, объявленные вне функции. Эти идентификаторы видимы в любом месте файла. Переменные с этой областью видимости являются глобальными) |
область действия — блок | Начинается открывающейся фигурной скобкой «{» блока и кончается с его закрытием скобкой «}«. Эту область видимости имеют также параметры функции. Переменные, имеющие такую область видимости, являются локальными в своем блоке |
область действия — прототип функции | Идентификаторы, объявленные в прототипе функции, видимы внутри прототипа |
область действия — функция (имена, объявленные в функции, могут быть использованы только в теле функции) | Начинается открывающейся фигурной скобкой «{» функции и кончается с ее закрытием скобкой «}«. Такую область видимости имеют только метки. Метка используется оператором goto и должна находится внутри той же функции |
В этой книге используется главным образом более общее подразделение на глобальные и локальные имена. Однако при необходимости более тонкого подразделения используются изложенные выше типы областей видимости.
[1]Область видимости называется также контекстом или областью действия(имен.)