Насколько я помню, при применении к переменным, этот модификатор заставляет выделять память под них единожды, при первичной инициализации, - тем самым делая доступными эти переменные (и их содержимое) в пределах видимости функции, в которорых они описаны....
А вот функции - зачем? Что значит ограничить область видимости, когда все функции и без того глобальны - и видны с любого места программы?
При использовании с функциями и глобальными переменными модификатор static лишь ограничивает их область видимости. Область видимости любых внутренних переменных в функцие уже ограничена. Применение модификатора static к ним делает эти переменные существующими постоянно. Тоесть память под них выделяется единожды и никогда не освобождается.
> Что значит ограничить область видимости, когда все функции и без того глобальны - и видны с любого места программы?
С модификатором static функция или глобальная переменная видна только в том модуле, где она описана. Соответственно редактор связей при компоновке не знает про них.
A C program need not all be translated at the same time. The text of the program is kept
in units called sourcefiles, (or preprocessing fies) in this International Standard. A
source fie together with all the headers and source fies included via the preprocessing
directive #include is known as a preprocessing translation unit. After preprocessing, a
preprocessing translation unit is called a translation unit.
>Насколько я помню, при применении к переменным, этот модификатор заставляет выделять память под них единожды, при первичной инициализации, - тем самым делая доступными эти переменные (и их содержимое) в пределах видимости функции, в которорых они описаны....
По моему не так, за пределами функции ты переменную не увидишь, просто при повторном вызове функции значение переменной сохраняется...так что про память ты угадал:)