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


Для глобальных переменных память отводится только один раз и сохраняется за ними до окончания работы программы. По умолчанию таким переменным присваивается нулевое значение.


Область видимости глобальных переменных начинается в точке описания и заканчивается в конце файла. Внутри блока, содержащего автоматическую переменную с тем же именем, что и глобальная переменная, глобальная будет невидимой.

Доступ к глобальным переменным возможен из других модулей (файлов). Для этого следует использовать спецификатор extern. Если описание extern применяется к переменной, расположенной внутри функции, то его действие распространяется только на данную функцию. Если же оно расположено вне функций, то его действие распространяется до конца файла.


При использовании спецификатора extern переменная только объявляется и память под нее не выделяется. Определять ее следует только в одном модуле .


Ассоциативная связь


Переменная a доступна в функциях main(), f1(), f2(), f3().


Ассоциативная связь


Ошибка. Переменная a не определена.


Все функции по умолчанию считаются глобальнымиили внешними. К любой функции можно обратиться из любого модуля, если только она не описана как static.


Функция определяется только один раз, но может быть объявлена многократно с помощью спецификатора extern.