Что означает статическое значение в ANSI-C

Возможный дубликат:
Что означает «статический» в программе на С?

Что означает static ключевое слово в C?

Я использую ANSI-C. Я видел несколько примеров кода, они используют ключевое слово static перед переменными и перед функциями. Какова цель использования с переменной? И какова цель в случае использования с функцией?

Как краткий ответ, для определения ключевого слова static при определении переменных используются два условия:

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

2- Переменные, определенные как static внутри блока внутри функции, будут сохраняться или «выживать» в разных вызовах одного и того же кодового блока. Если они определены инициализированы, то они инициализируются только один раз. static переменные, как правило, гарантированно инициализируются до 0 по умолчанию.

static внутри тела функции, т. е. используемый как classификатор хранения переменных, заставляет эту переменную сохранять ее значение между вызовами функций – можно сказать, что статическая переменная внутри функции является глобальной переменной, видимой только этой функции. Это использование static всегда делает функцию, которую он использует в streamе, небезопасно, вы должны ее избегать.

В другом варианте использования используется static объект в глобальной области, то есть для глобальных переменных и функций: статические функции и глобальная переменная являются локальными для единицы компиляции, то есть они не отображаются в таблице экспорта скомпилированного двоичного объекта. Таким образом, они не загрязняют пространство имен. Объявление статических функций и глобальных переменных, которые не могут быть доступны извне компиляции (например, C-файл), является хорошей идеей! Просто имейте в виду, что статические переменные не должны помещаться в заголовочные файлы (за исключением очень редких особых случаев).

Давайте будем гением компьютера.