Программирование на C и C++

Онлайн справочник программиста на C и C++

Правила видимости для функций

Правила видимости языка - это правила, управляющие тем, что «видит» часть программы.

Каждая функция в С - это дискретный блок кода. Код функции является собственностью функции, и к нему нельзя получить доступ с помощью какого-либо оператора или другой функции, помимо вызова данной функции. (Например, невозможно, используя goto, перейти на середину другой функции.) Код, образующий тело функции, спрятан от остальной части программы. Если код не использует глобальные переменные или данные, то он и другие части программы не могут влиять друг на друга. Другими словами, код и данные, определенные в одной функции, не могут действовать на код и данные, определенные в другой функции, поскольку данные функции имеют разные области видимости.

Переменные, определенные в функциях, называются локальными переменными. Локальные переменные создаются при входе в функцию и уничтожаются при выходе из нее. Поэтому локальные переменные не могут содержать значения между вызовами функций. Единственным исключением из этого правила являются переменные, объявленные со спецификатором static. Он заставляет компилятор воспринимать данную переменную как глобальную, но область видимости по-прежнему ограничена функцией.

Все функции в С находятся на одном уровне видимости. То есть невозможно определить функцию в функции.