2. Содержание
• Области видимости переменных
• Классы памяти переменных
auto
register
extern
static
• Модификатор static для функции
• Ключевое слово volatile
23.05.2019 0:36 Advanced 2
3. Области видимости переменных
#include <stdio.h>
unsigned int myGlobalVariable;
int main()
{
unsigned int myLocalVariable_lv0;
{
unsigned int myLocalVariable_lv1;
{
unsigned int myLocalVariable_lv2;
}
}
return 0;
}
3
7. Класс памяти auto
auto - спецификатор автоматического
класса памяти указывает на то, что объект
располагается в локальной (или
автоматически распределяемой) памяти.
7
9. Класс памяти register
register - спецификатор автоматического
класса памяти. Применяется к объектам, по
умолчанию располагаемым в локальной
памяти. Представляет из себя "ненавязчивую
просьбу" к транслятору (если это возможно) о
размещении значений объектов, объявленных
со спецификатором register в одном из
доступных регистров, а не в локальной
памяти.
9
11. Класс памяти extern
extern - cпецификатор внешнего
статического класса памяти. Обеспечивает
существование объекта с момента его
определения до конца выполнения
программы. Объект, объявленный со
спецификатором extern доступен во всех
модулях программы, то есть глобален
11
13. Класс памяти static
static – спецификатор внутреннего статического
класса памяти. Применяется только(!) к именам
объектов и функций. В C этот спецификатор имеет
два значения. Первое означает, что определяемый
объект располагается по фиксированному адресу.
Тем самым обеспечивается существование объекта
с момента его определения до конца выполнения
программы. Второе значение означает
локальность. Объявленный со спецификатором
static локален в одном программном модуле (то
есть, недоступен из других модулей
многомодульной программы).
13
20. Ключевое слово volatile
Ключевое слово volatile информирует
компилятор, что значение переменной
может меняться извне. Это может
произойти под управлением
операционной системы, аппаратных
средств или другого потока. Поскольку
значение может измениться, компилятор
каждый раз загружает его из памяти.
20