Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лаб_ раб_С++.doc
Скачиваний:
4
Добавлен:
07.05.2019
Размер:
600.58 Кб
Скачать

4.7. Переменные

Переменная представляет собой имя ячейки памяти, которую должен использовать для хранения модифицируемого значения, чтобы память была доступна программе для использования, она должна быть закреплена за ней. Существует статическое и динамическое выделение памяти. Статическое выделение памяти происходит на этапе компиляции и размер блока не может быть изменен в течение времени выполнения программы. Динамическая память выделяется именно в процессе выполнения, и ее размер может зависеть от текущего состояния программы. Участок памяти, закрепленный за программой, используется для хранения данных.

Если данные могут меняться в процессе работы, то говорят об использовании переменных, если не могут – то констант. Для доступа к переменной или константе необходимо использовать имя или адрес.

Переменная - это именованная область памяти, значение которой может изменяться в процессе выполнения программы.

Все переменные должны быть объявлены для своего использования, для того чтобы компилятор смог выделить статическую память, поэтому ему требуется знать ее точный размер. Для того чтобы объявить переменную, необходимо указать: имя, адрес, размер (определяемый типом), значение.

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

Если переменная объявлена вне тел функций, то она считается глобальной и размещается в сегменте данных и ее начальное значение равно нулю. Объявление переменной с присвоением ей начального значения называется инициализацией.

Если функция имеет аргумент, следует объявить переменные, которые будут принимать их значения, эти переменные называются формальными параметрами.

В языке С++ существуют два классификатора, управляющих доступом и модификацией: const и volatile.

Константа – это именованная область памяти, значение которой не может изменяться в процессе выполнения программы. Константам всегда присваивается некоторое значение при объявлении, и оно не может быть изменено в дальнейшем. Переменные типа const не могут изменяться, однако их можно инициализировать.

Квалификатор volatile сообщает компилятору, что значение переменной может изменяться неявно. Например, адрес глобальной переменной передать таймеру операционной системы и использовать его для отсчета реального времени. В этом случае содержимое переменной изменяется без явного выполнения какого-либо оператора присваивания.

В языке С/С++ предусмотрены управляющие символьные константы, которые приведены в таблице 2.

Таблица 2.

Управляющие символьные константы

\b

Пробел

\f

Прогон бумаги

\n

Новая строка

\r

Возврат каретки

\t

Горизонтальная табуляция

\”

Двойная кавычка

\’

Одинарная кавычка

\0

Нуль

\\

Обратная косая черта

\v

Вертикальная табуляция

\a

Звуковой сигнал

\?

Знак вопроса

\N

Восьмеричная константа N

\xN

Шестнадцатеричная константа N

Самые знаменитые служебные символы: перевод строки (код 13), возврат каретки (код 10), табуляция (код 9). Для задания их в программе в виде символьных констант используется сочетание двух видимых символов, а именно “\n”, “\r”, “\t” соответственно. Для представления символа “слэш“ используется конструкция “\\”

В языке С существуют четыре спецификатора хранения: extern, static, register, auto.

Эти спецификаторы сообщают компилятору, как хранить объявленную переменную. Общий вид объявления, использующего эти спецификаторы:

спецификатор_хранения тип имя_переменной

Главное предназначение спецификатора externуказать, что объявляемый объект обладает внешними связями в рамках всей программы. В большинстве случаев объявление переменной одновременно является ее определением. Однако, указав перед именем переменной спецификатор extern, можно объявить ее, не определяя.

Если локальная переменная объявлена с помощью спецификатора static, компилятор выделит для нее постоянное место для хранения, как и для глобальной переменной.

Применение спецификатора static к глобальной переменной заставляет компилятор создавать глобальную переменную, видимую только в пределах текущего файла. Несмотря на то, что эта переменная остается глобальной, в других файлах она не существует.

Спецификатор register был разработан для того, чтобы компилятор сохранял значение переменной в регистре центрального процессора, а не в памяти, как обычно. Это означает, что операции над регистровыми переменными выполняются намного быстрее.