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