Главная->Інформатика та програмування->Содержание->Указатели должны иметь значение

ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В C++ (4-Е ИЗДАНИЕ) (часть 10) онлайн

Указатели должны иметь значение

Пусть у нас есть адрес 0x8f4ffff4, мы можем его назвать значением указателя. Указатель ptr называется переменной-указателем. Как переменная var1 типа int может принимать значение, равное 11, так переменная-указатель может прини- мать значение, равное 0x8f4ffff4.

Пусть мы определили переменную для хранения некоторого значения (по- ка мы ее не инициализировали). Она будет содержать некое случайное число. В случае с переменной-указателем это случайное число является неким адресом в памяти. Перед использованием указателя необходимо инициализировать его определенным адресом. В программе PTRVAR указателю ptr присваивается адрес переменной var1:

ptr = &var1; // помещает в переменную ptr адрес переменной var1

Затем программа выводит на дисплей значение, содержащееся в переменной ptr, это будет адрес переменной var1. Далее указатель принимает значение адре- са переменной var2 и выводит его на экран. На рис. 10.3 показаны действия про- граммы PTRVAR, а ниже мы приведем результат ее работы:

0x8f51fff4- адрес переменной var1 0x8f51fff2- адрес переменной var2

0x8f51fff4- значение ptr равно адресу переменной var1 0x8f51fff2- значение ptr равно адресу переменной var2

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

случайный адрес, на который он указывает, может оказаться чем угодно: от кода нашей программы до кода операционной системы. Неинициализированный ука- затель может привести к краху системы, его очень тяжело выявить при отладке программы, так как компилятор не выдает предупреждения о подобных ошиб- ках. Поэтому всегда важно убедиться, что каждому указателю перед его исполь- зованием было присвоено значение.

Рис. 10.3. Изменение значений указателя ptr

 

7