LINUX.ORG.RU

Ответ на: комментарий от bbk123

А можно подробнее?

Насколько я помню, при применении к переменным, этот модификатор заставляет выделять память под них единожды, при первичной инициализации, - тем самым делая доступными эти переменные (и их содержимое) в пределах видимости функции, в которорых они описаны....

А вот функции - зачем? Что значит ограничить область видимости, когда все функции и без того глобальны - и видны с любого места программы?

anonymous
()
Ответ на: комментарий от anonymous

При использовании с функциями и глобальными переменными модификатор static лишь ограничивает их область видимости. Область видимости любых внутренних переменных в функцие уже ограничена. Применение модификатора static к ним делает эти переменные существующими постоянно. Тоесть память под них выделяется единожды и никогда не освобождается.

bbk123 ★★★★★
()
Ответ на: комментарий от bbk123

Ограничение видимости в данном случае означает, что при линковке эти переменные и функции будут недоступны.

bbk123 ★★★★★
()
Ответ на: комментарий от anonymous

> Что значит ограничить область видимости, когда все функции и без того глобальны - и видны с любого места программы?

С модификатором static функция или глобальная переменная видна только в том модуле, где она описана. Соответственно редактор связей при компоновке не знает про них.

Legioner ★★★★★
()

>Какой смысл делать функцию, с типов возвращаемых данных static ??

никто и не делает, static относиться не к типу возвращаемого значения,
а к самой функции.

fghj ★★★★★
()
Ответ на: комментарий от fghj

> С модификатором static функция или глобальная переменная видна только > в том модуле

Что есть "модуль"?

anonymous
()
Ответ на: комментарий от anonymous

> Что есть "модуль"?

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.

под модулем я имел ввиду translation unit.

Legioner ★★★★★
()
Ответ на: комментарий от anonymous

>Насколько я помню, при применении к переменным, этот модификатор заставляет выделять память под них единожды, при первичной инициализации, - тем самым делая доступными эти переменные (и их содержимое) в пределах видимости функции, в которорых они описаны....

По моему не так, за пределами функции ты переменную не увидишь, просто при повторном вызове функции значение переменной сохраняется...так что про память ты угадал:)

golodranez ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.