Контрольная работа: Актуальные вопросы в работе с С++
1
1
2
2
4
Значения целых типов записываются в программе привычным способом:
123 4 -3 +345 -699
Наличие десятичной точки в записи целого числа недопустимо. Будет ошибкой записать целое число следующим образом:
123.0
Кроме привычной десятичной формы записи допускается запись целых чисел в шестнадцатиричном формате, используя префикс $, например:
$01AF $FF $1A $F0A1B
Регистр букв A,B, ..., F значения не имеет.
Допустимые операции:
- присваивание;
- все арифметические: +, - ,*, /, div, mod (при обычном делении [/] результат вещественный!);
- сравнение <, >, >=, <=, <>, =.
4. Что такое указатель? Как по указателю можно занести значение? Приведите примеры
Специальными объектами в программах на языках Си++ являются указатели.
Различают указатели-переменные (именно их мы будем называть указателями) и указатели-константы. Значениями указателей служат адреса участков памяти, выделенных для объектов конкретных типов: именно поэтому в определении и описании указателя всегда присутствует обозначение соответствующего ему типа. Эта информация позволяет в последующем с помощью указателя получить доступ ко всему сохраняемому объекту в целом.
Указатели делятся на две категории - указатели на объекты и указатели на функции. Выделение этих двух категорий связано с отличиями в свойствах и правилах использования. Например, указатели ФУНКЦИЙ не допускают применения к ним арифметических операций, а указатели объектов разрешено использовать в некоторых арифметических выражениях. Начнем с указателей объектов.
В простейшем случае определение и описание указателя-переменной на некоторый объект имеют вид:
tуре *имя_ указателя;
где tуре _ обозначение типа; имя_указателя - это идентификатор;
* - унитарная операция раскрытия ссылки (операция разыменования; операция обращения по адресу; операция доступа по адресу), операндом которой должен быть указатель (именно в соответствии с этим правилом вслед за ней следует имя_указателя).
Признаком указателя при лексическом разборе определения или описания служит символ '*', помещенный перед именем. Таким образом, при необходимости определить несколько указателей на объекты одного и того же типа этот символ '*' помещают перед каждым именем. Например, определение int*i1р, *i2р, *iЗр, i; вводит три указателя на объекты целого типа i1р, i2р, i3р и одну переменную i целого типа. Переменной i будет отведено в памяти 2 байта (ТС++ или ВС++), а указатели i1р, i2р, i3р разместятся в участках памяти, размер которых также зависит от реализации, но которые только иногда имеют длину 2 байта.
В совокупности имя типа и символ '*' перед именем воспринимаются как обозначение особого типа данных "указатель на объект данного типа".
При определении указателя в большинстве случаев целесообразно выполнить его инициализацию. Формат определения станет таким:
tуре *имя_ указателя инициализатор;
Как упоминалось, инициализатор имеет две формы записи, поэтому допустимы следующие две формы определения указателей: