Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lekcii_1_10 / Лекция 09.pptx
Скачиваний:
36
Добавлен:
21.05.2015
Размер:
876.17 Кб
Скачать

Спецификатор типа volatile

Спецификатор volatile информирует компилятор о том, что данная

переменная может быть изменена

внешними (по отношению к программе)

факторами.

Например, адрес некоторой глобальной переменной может передаваться управляемой прерываниями подпрограмме тактирования, которая обновляет эту переменную с приходом каждого импульса сигнала времени. В такой ситуации содержимое переменной изменяется без

int clock, timer;// ...

timer = clock; // строка A // ... Какие-нибудь действия.

cout << "Истекшее время " << clock-timer; // строка Б

volatile int clock;

Теперь значение переменной clock будет опрашиваться при каждом ее использовании.

const volatile unsigned char *port = (const volatile char *) 0x2112;

В этом примере для преобразования целочисленного литерала 0x2112 в const- указатель на volatile-символ необходимо применить операцию приведения типов.

Спецификаторы классов памяти

C++ поддерживает пять спецификаторов классов памяти:

auto

extern

register

static

Mutable

Спецификаторы классов памяти определяют,

как должна храниться переменная.

Спецификатор класса памяти auto

Спецификатор auto объявляет локальную переменную. Но он используется довольно редко (возможно, вам никогда и не доведется применить его), поскольку локальные переменные являются "автоматическими" по умолчанию.

Спецификатор extern объявляет переменную, но не выделяет для нее области памяти.

#include <iostream> using namespace std; int main()

{

extern int first, last;

//Использование глобальных переменных.

cout << first << " " << last << "\n";

return 0;

}

// Глобальное определение переменных first и last.

int first = 10, last = 20;

Статические переменные

Переменные типа static — это переменные "долговременного" хранения, т.е. они хранят свои значения в пределах своей функции или файла.

Соседние файлы в папке lekcii_1_10