Адресные операции

Язык С++ поддерживает два адресных оператора: операция взятия адреса & и косвенная операция *. Эти операции используются для работы с переменными типа указатель.

УКАЗАТЕЛЬ - это переменная, содержащая адрес некоторых данных, а не их значение. Зачем это нужно?

Во-первых, мы можем использовать указатель места расположения различных данных и различных структур данных. Изменением адреса, содержащегося в указателе, вы можете манипулировать (создавать, считывать, изменять) информацию в различных ячейках. Это позволит вам, например, связать несколько зависимых структур данных с помощью одного указателя.

Во-вторых, использование указателей позволит вам создавать новые переменные в процессе выполнения программы. С++ позволяет вашей программе запрашивать некоторое количество памяти (в байтах), возвращая адреса, которые можно запомнить в указателе. Этот прием известен как ДИНАМИЧЕСКОЕ РАСПРЕДЕЛЕНИЕ; используя его, ваша программа может приспосабливаться к любому объему памяти, в зависимости от того как много (или мало) памяти доступно вашему компьютеру.

В-третьих, вы можете использовать указатели для доступа к различным элементам структур данных, таким как массивы, строки или структуры. Указатель, в сущности, указывает место в памяти вашего компьютера (а используя смещение относительно начального адреса можно указать целый сегмент памяти), в котором размещены те или иные данные. Индексируя указатель, вы получаете доступ к некоторой последовательности байтов, которая может представлять, например, массив или структуру.

Операция разадресации

Форма записи:

* Идентификатор

Операция разадресации (*) или разыменования осуществляет косвенный доступ к адресуемой величине через указатель, т.е. в *Идентификатор хранится не непосредственно искомая величина, а только ее адрес. Операнд должен быть указателем. Результатом операции является величина, на которую указывает операнд.

Типом результата является тип величины, адресуемой указателем. Результат не определен, если указатель содержит недопустимый адрес.

Рассмотрим типичные ситуации, когда указатель содержит недопустимый адрес:

• указатель является нулевым;

• указатель определяет адрес такого объекта, который не является активным в момент ссылки;

• указатель определяет адрес, который не выровнен до типа объекта, на который он указывает;

• указатель определяет адрес, не используемый выполняющейся программой.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: