Цитата(_Макс @ Apr 22 2010, 01:27)

Думал глобальная это когда объявлена в файле за пределами любого из блоков.
Это переменная с областью видимости (scope) в пределах единицы трансляции. А глобальные - это с областью видимости во всем проекте. Так вот, в языках С/С++ глобальная переменная создается двумя действиями. В одной единице трансляции делается объявление переменной, например:
// file1.cpp
int a;
а во всех единицах трансляции делается объявление вида:
extern int a;
Для удобства такое объявление обычно помещают в заголовочный файл. Объявление int a; порождает выделение памяти под объект "a". А объявление extern int a; не порождает никакого выделения памяти и просто говорит компилятору, что где-то есть вот такой объект указанного типа, и компилятор просто ссылается на это имя, которое потом на этапе линковки заменяется конкретным адресом.
«Отыщи всему начало, и ты многое поймёшь» К. Прутков