ЧАСТЬ 3

ИНФОРМАТИКА

Электронное учебно-методическое пособие

 

 
 

 

4.9. Выражения и операторы

В C++ имеется богатый набор операций, с помощью которых в выражениях образуются новые значения и изменяются значения переменных. Поток управления в программе задаётся с помощью операторов, а описания используются для введения в программе имён переменных, констант и т. д. Описания являются операторами, поэтому они свободно могут сочетаться с другими операторами [10].

 

4.9.1. Выражения

В C++ имеется большое число операций, и они будут объясняться там, где (и если) это потребуется. Следует учесть, что операции:

~ – дополнение;
& – И;
^ – исключающее ИЛИ;
| – включающее ИЛИ;
<< – логический сдвиг влево;
>> – логический сдвиг вправо

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

Смысл операции зависит от числа операндов; унарное & является операцией взятия адреса, а бинарное & – это операция логического И. Смысл операции зависит также от типа её операндов: + в выражении a + b означает сложение с плавающей точкой, если операнды имеют тип float, но целое сложение, если они типа int.

Можно определить операцию для типа, определяемого пользователем, без потери её значения, предопределённого для основных и производных типов.

В C++ есть операция присваивания =, а не оператор присваивания, как в некоторых языках. Таким образом, присваивание может встречаться в неожиданном контексте; например:

x=sqrt(a=3*x);
a=b=c;

Это означает присвоение c объекту b, а затем объекту a. Другим свойством операции присваивания является то, что она может совмещаться с большинством бинарных операций, например:

x[i+3]*=4

Это означает x[i + 3] = x[i + 3]*4, за исключением того факта, что выражение x[i + 3] вычисляется только один раз.



4.9.2. Указатели

В большинстве программ на C++ широко применяются указатели.

Это унарная операция, называемая косвенной адресацией.

Например, если имеется char* p, то *p есть символ, на который указывает p. Часто при работе с указателями бывают полезны операция увеличения ++ и операция уменьшения --.

Предположим, p указывает на элемент вектора v, тогда p++ делает p указывающим на следующий элемент.

Указатель может содержать адрес объекта соответствующего типа:

char c;
p = &c // p указывает на c

Унарное & является операцией взятия адреса.

Указатель — это переменная, которая содержит адрес другого объекта. Этим объектом может быть некоторая переменная, динамический объект или функция. Говорят, что указатель ссылается на соответствующий объект. Хотя адрес, по существу — 32-битное целое число, определяющее положение объекта в виртуальной памяти программы, указатель является не просто целым числом, а специальным типом данных. Он «помнит», на какого рода данные ссылается. Объявление указателя выглядит так:

тип_указываемого_объекта *имя_указателя [= значение];


Примеры объявлений:

int *pIntVar; // Указатель на целое.
double *pDouble = SdoubleVar; // Инициализация указателя на double.
char *arrStr[16]; // Массив указателей на char.
char (*arrStr) [16][16]; // Указатель на матрицу char.

 

 


© Сибирская государственная геодезическая академия (СГГА), 2011