Что такое классы хранения (storage classes) в C?
Этот вопрос проверяет понимание областей видимости и времени жизни переменных.
Короткий ответ
В C есть 4 класса хранения переменных:
auto – локальная переменная по умолчанию.
extern – глобальная переменная, объявленная вне функции.
static – переменная, сохраняющая значение между вызовами функции.
register – переменная, хранящаяся в регистрах процессора для быстрого доступа.
Длинный ответ
Пример auto (по умолчанию):
void func() {
auto int x = 10;
printf("%d", x);
}Пример extern (глобальная переменная):
extern int count;Пример static (сохраняет значение):
void counter() {
static int count = 0;
count++;
printf("%d ", count);
}Пример register (хранение в процессоре):
register int fastVar = 10;
Классы хранения определяют, где и как переменные хранятся в памяти.