Указатели.

Стандартные типы данных

Различают базовый тип данных и модификатор типа. К базовым типам относятся char (символьный), int (целый), float (вещественный с одинарной точностью), double (вещественный с двойной точностью), void (пустой тип).

Модификаторы: unsigned (беззнаковый), signed (знаковый), short (короткий), long (длинный).

Спецификатор типа – одно или несколько ключевых слов, определяющих тип переменной, например: signed short int, long int, unsigned char и т.д. По умолчанию целые типы определяются как signed.

· Данные целого типа:

Спецификатор типа Объем, байт Диапазон Представления числа Примечание
Signed int -32768 . . 32768 целое знаковое
unsigned int 0 . . 65535 целое без знака
Signed long int -2147483648 . . 2147483647 целое длинное зн.
unsigned long int 0 . . 4 294 967 295 целое длинное без.

Знаковый тип представлен в дополнительном коде.

 

· Данные вещественного типа:

Спецификатор типа Объем, байт Диапазон представления числа Точность, знаков
Float 1.17E-38 ... 3.37E+38
Double 2.23E-308 ... 1.67E+308
Long double 3.37E-4932 ... 1.2E+4932

 

· Данные символьного типа (char) занимают в памяти 1 байт и кодируются на основе международного кода ASCII. Например, символ 'A' имеет значение: 10000001. Символы можно сравнивать между собой отношениями: ==, <, >, <=, >=, !=.

 

Константой называется переменная, значение которой не может быть изменено в процессе выполнения программы. Константы записываются в следующем виде:

Целая десятичная константа - целое число, начинающееся со значащей цифры: 123, +45, -317, 883, 19 и т.д.

Целая 8-ричная константа начинается с нуля: +017,-087,0197,...

Целая 16-ричная константа начинается с '0x': 0xF,-0x4A6EC2, ...

Вещественная константа должна содержать десятичную точку или букву E(e):-0.13, +4612.09, +5., 3.14159, 0.314159E+1, ...

Символьная константа: 'A','9','+','%','#','k','q', ...

Строковая константа: "while","КЛАСС","AAE","A+B*C",...

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

Определение указателя:

<тип> * <имя переменной указтеля>;

Здесь *- операция доступа по указателю.

Обратная операция – взятие адреса:&.

NULL– нулевое значение указателя, которое никуда не указывает.

Приведем примеры:

int *p; // Объявляем указатель p. Пока он никуда не указывает.

int A; // Объявляем переменную A.

A=19; // Присвоим ей значение 19.

p=&A; // Указатель p теперь указывает на переменнуюA.

int *t; // Объявляем указатель p. Пока он никуда не указывает.

int B; // Объявляем переменную B.

B=5; // Присвоим ей значение 19.

t=&B; // Указательt указывает на переменную B.

int C; // Переменная C.

C=*p+*t; // C = 19 + 5 =24; Содержимое переменной по

// указателю p,учитывая, что *p=19, и содержимое

// переменной по указателю *t=5, складываются и

// результат записывается в переменную C.

p=NULL; // Теперь указатель p никуда не указывает.

Возможно создание указателя на указатель:

int **p;

 

 

С указателями можно выполнять операции.

1. Изменение указателя на следующий или предыдущий адрес:
p+i p-i p++ p--
Значение указателя будет увеличиваться или уменьшаться на размер элемента.

2. Указатели могут быть сравнены между собой на равенство и неравенство: p>t p==t p!=t p==NULL и т.д.

Следующий фрагмент иллюстрирует изменение указателей:

int D[7]={12,14,19,46,53,11,3};

int p;

p=&D[0];

for (int i=0; i<7; i++) {cout<<*p<<" "; p++};

cout<<endl;

2.4. Операторы языка программирования C++

Оператор – законченная фраза языка программирования, которая определяет некоторый этап обработки данных. Все операторы разбиваются на 2 группы:

· основные операторы, не содержащие других операторов;

· производные, в состав которых входят другие операторы: составной оператор, оператор процедуры, оператор цикла. Составной оператор заключается в операторные скобки: { }.