Читайте также:
|
|
В любой программе требуется производить вычисления. Для этого используются выражения, которые состоят из операндов, знаков операций и скобок. Каждый операнд, в свою очередь, является выражением или одним из его частных случаев, например, константой или переменной.
Переменная – это именованная область памяти, в которой хранятся данные определенного типа. У переменной есть имя и значение. Имя служит для обращения к области памяти, в которой хранится значение. Перед использованием любая переменная должна быть описана конструкцией вида:
[класс памяти] [const] тип имя [инициализатор];
Необязательный класс памяти может принимать одно из значений auto, extern, static и register.
Модификатор const показывает, что значение переменной изменять нельзя. Такую переменную называют именованной константой, или просто константой.
При описании можно присвоить переменной начальное значение, это называется инициализацией. Инициализатор можно записывать в двух формах – со знаком равенства: = значение или в круглых скобках: (значение). Константа должна быть инициализирована при объявлении.
В одном операторе можно описать несколько переменных одного типа, разделяя их запятыми.
Если тип инициализирующего значения не совпадает с типом переменной, то выполняются преобразования типа по определенным правилам.
Описание переменной явно или по умолчанию задает ее область действия. Однако класс памяти и область действия зависят не только от описания, но и от места размещения его в программе.
Область действия идентификатора – это часть программы, в которой его можно использовать для доступа к связанной с ним области памяти. в зависимости от области действия переменная может быть локальной или глобальной.
Если переменная определена внутри блока, она называется локальной, область ее действия – от точки описания до конца блока, включая все вложенные блоки. Если переменная определена вне любого блока, она называется глобальной и областью ее действия считается файл, в котором она определена, от точки описания до его конца.
Класс памяти определяет время жизни и область видимости программного объекта. Если класс памяти не указан явным образом, он определяется компилятором исходя из контекста объявления.
Время жизни может быть постоянным (в течение выполнения программы) и временным (в течение выполнения блока).
Областью видимости идентификатора называется часть текста программы, из которой допустим обычный доступ к связанной с идентификатором областью памяти. чаще всего область видимости совпадает с областью действия. Исключением является ситуация, когда во вложенном блоке описана переменная с таким же именем. В этом случае внешняя переменная во вложенном блоке невидима, хотя он и входит в ее область действия. Но к этой переменной, если она глобальная, можно обратиться, используя операцию доступа к области видимости::.
Для задания класса памяти используются следующие спецификаторы:
- auto – автоматическая переменная. Память под нее выделяется в стеке и при необходимости инициализируется каждый раз при выполнении оператора, содержащего ее определение. Освобождение памяти происходит при выходе из блока, в котором описана переменная. Время ее жизни – с момента описания до конца блока. Для глобальных переменных этот спецификатор не используется, а для локальных он принимается по умолчанию;
- extern – означает, что переменная определяется в другом месте программы (в другом файле или дальше по тексту). Используется для создания переменных, доступных во всех модулях программы, в которой они объявлены. Если переменная в том же операторе инициализируется, то данный спецификатор игнорируется;
- static – статическая переменная. Время жизни – постоянное. Инициализируется один раз при первом выполнении оператора, содержащего определение переменной. В зависимости от расположения оператора описания статические переменные могут быть глобальными и локальными. Глобальные статические переменные видны только в том модуле, в котором они описаны;
- register – аналогично auto, но память выделяется по возможности в регистрах процессора. Если такой возможности у компилятора нет, переменные обрабатываются как
auto.
Если при определении начальное значение переменных явным образом не задается, компилятор присваивает глобальным и статическим переменным значение соответствующего типа. Автоматические переменные не инициализируются.
Описание переменной может выполняться в форме объявления или определения. Объявление информирует компилятор о типе переменной и классе памяти, а определение содержит, кроме этого, указание компилятору выделить память в соответствии с типом переменной. В С++ большинство объявлений являются одновременно и определениями.
Рассмотрим основные операции.
Операции увеличения и уменьшения на 1 (++ и --). Эти операции, называемые также инкрементом и декрементом, имеют две формы записи – префиксную, когда операция записывается перед операндом, и постфиксную. В префиксной форме сначала изменяется операнд, а затем его значение становится результирующим значением выражения, а в постфиксной форме значением выражения является исходное значение операнда, после чего он изменяется.
Дата добавления: 2015-02-16; просмотров: 132 | Поможем написать вашу работу | Нарушение авторских прав |