Указатели.
Стандартные типы данных
Различают базовый тип данных и модификатор типа. К базовым типам относятся 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 группы:
· основные операторы, не содержащие других операторов;
· производные, в состав которых входят другие операторы: составной оператор, оператор процедуры, оператор цикла. Составной оператор заключается в операторные скобки: { }.