Различают два понятия область существования и область доступа.
Область существования –применяется с точки зрения существования программы, это та ее часть, при использовании которой выделена память под переменную («время жизни»).
Область доступа – совокупность строк программы, в которой можно использовать соответствующий объект (например, идентификатор типа).
Классы памяти в С.
Классы памяти в си относятся к переменным. Существует 4 класса памяти.
<класс памяти> = одно из зарезервированных слов: auto, extern, static, register; используется для описания переменных.
Для локальных переменных класс памяти auto используется по умолчанию. Область существования – с момента описания до конца составного оператора, т.е. до конца описания функции(}).
Все переменные, которые мы используем внутри функции, относятся к данному классу памяти. Для переменных, имеющих данный класс памяти, идентификатор писать не обязательно.
Время существования-с момента резерв. памяти до исполнения динам. варианта.
register, - рассматривается как рекомендация транслятору выделить память под переменную в регистрах процессора. В современных системах программирования использовать не рекомендуется.
extern, - применяется для глобальных переменных; в явном виде не используется, т.к. переменные, память для которых резервируется вне описания функций, автоматически относятся к этому классу. Область существования совпадает с областью доступа(с момента описания до конца текста программы). Память под эти переменные выделяется на все время работы программы.
static, - промежуточный вариант. Обычно используется для описания локальных переменных. Если переменная использует этот класс памяти, то область памяти считается недоступной, но и в то же время не освобождается. Область существования - с момента описания и до конца программы. Область доступа – с момента описания и до конца блока.
Данный класс памяти не удовлетворяет принципу модульности.