Interested Article - Класс памяти

Класс памяти переменной ( англ. 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 , Интуит.ру
Источник —

Same as Класс памяти