мета-данные страницы
Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
| c:c_ultimate_guide:storage_classes [2025/10/10 13:19] – radi0dev | c:c_ultimate_guide:storage_classes [2025/11/09 12:07] (текущий) – внешнее изменение A User Not Logged in | ||
|---|---|---|---|
| Строка 3: | Строка 3: | ||
| В Си существует четыре основных класса хранения: | В Си существует четыре основных класса хранения: | ||
| - | ==== extern | + | ===== auto ===== |
| - | ==== extern ==== | + | Класс хранения auto является классом по умолчанию для всех **локальных**((Это означает, |
| + | |||
| + | * Область видимости: | ||
| + | * Жизненный цикл: переменная создается при входе в блок и уничтожается при выходе из него. | ||
| + | * Начальное значение: | ||
| + | |||
| + | <code c> | ||
| + | void myFunction() { | ||
| + | int a; // То же самое, что и "auto int a;"" | ||
| + | a = 10; | ||
| + | // a доступна только внутри myFunction | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ===== extern ===== | ||
| + | |||
| + | Используется для объявления глобальной переменной или функции, | ||
| + | |||
| + | * Область видимости: | ||
| + | * Жизненный цикл: существует в течение всего времени выполнения программы. | ||
| + | * Начальное значение: | ||
| - | допустим, | ||
| <code c> | <code c> | ||
| Строка 44: | Строка 63: | ||
| } | } | ||
| </ | </ | ||
| + | |||
| + | ===== static ===== | ||
| + | |||
| + | Ключевое слово static имеет два основных применения в зависимости от контекста: | ||
| + | |||
| + | Когда static применяется к **локальной** переменной, | ||
| + | |||
| + | * Область видимости: | ||
| + | * Жизненный цикл: Существует в течение всего времени выполнения программы, | ||
| + | * Начальное значение: | ||
| + | |||
| + | Когда static применяется к **глобальной** переменной или функции, | ||
| + | |||
| + | * Область видимости: | ||
| + | * Жизненный цикл: переменная/ | ||
| + | |||
| + | ===== register ===== | ||
| + | |||
| + | Класс хранения register является рекомендацией для компилятора поместить переменную не в оперативную память, | ||
| + | |||
| + | < | ||
| + | Однако в современных компиляторах register почти не используется, | ||
| + | </ | ||
| + | |||
| + | * Область видимости: | ||
| + | * Жизненный цикл: Локальный. | ||
| + | |||
| + | <note important> | ||
| + | К register-переменной нельзя применить оператор взятия адреса &, так как у нее нет адреса в памяти. | ||
| + | </ | ||