- Класс памяти
-
Класс памяти переменной (англ. Storage class) — понятие в некоторых языках программирования. Он определяет область видимости переменной, а также как долго переменная находится в памяти.
Классы памяти в C и C++
Переменная в этих языках должна принадлежать ровно к одному классу памяти, что указывается с помощью ключевого слова, который пишется перед типом переменной.
auto
— автоматическая (локальная), динамическая переменная. Автоматические переменные создаются при входе в функцию и уничтожаются при выходе из неё. Они видны только внутри функции или блока, в которых определены. Этот класс памяти используется, если не указан ни один из четырёх модификаторов, и в C++0x значение словаauto
изменили.static
— статическая переменная (локальная). Статические переменные имеют такую же область действия, как автоматические, но они не исчезают, когда содержащая их функция закончит свою работу. Компилятор хранит их значения от одного вызова функции до другого.extern
— внешняя (глобальная) переменная. Внешние переменные доступны везде, где описаны, а не только там, где определены. Включение ключевого слова extern позволяет функции использовать внешнюю переменную, даже если она определяется позже в этом или другом файле.register
— регистровая переменная (локальная). Это слово является всего лишь «пожеланием» компилятору помещать частоиспользуемую переменную в регистры процессора для ускорения программы.
Класс памяти можно не указывать, тогда действуют следующие умолчания:
- переменные, описанные внутри функции или блока, считаются локальными (auto)
- переменные, описанные вне всех функций, считаются внешними.
- функции считаются внешними.
Статическая переменная, описанная вне любой функции, становится внешней статической. Разница между внешней переменной и внешней статической переменной заключается в области их действия. Обычная внешняя переменная может использоваться функциями в любом файле, а внешняя статическая переменная может использоваться только функциями того же самого файла, причем после определения переменной.
OpenMP
Для обеспечения параллельного исполнения потоков в OpenMP предусмотрено 2 класса переменных: shared (общие, синхронизируемые) и private (локальные для каждого потока).
Ссылки
- Классы памяти и область действия глава из книги "Основы программирования на языке C", Н.А. Калинина, Н.И. Костюкова ISBN: 978-5-9556-0057-4, Интуит.ру
Для улучшения этой статьи по информационным технологиям желательно?: - Проставить интервики в рамках проекта Интервики.
- Дополнить статью (статья слишком короткая либо содержит лишь словарное определение).
- Добавить иллюстрации.
Категория:- Концепции языков программирования
Wikimedia Foundation. 2010.