Соглашение о нулевом указателе



После того как указатель объявлен, но до того, как ему будет присвоен какой-то разумный адрес, он будет содержать произвольное значение. Попытка использовать указатель перед его инициализацией с большой вероятностью приведёт к аварийному завершению программы. Поскольку нет надёжного способа избежать использования неинициализированного указателя, программисты на С++ приняли процедуру, которая помогает предотвратить некоторые ошибки. По принятому соглашению, если указатель содержит нулевое значение, то считается, что он никуда не указывает. Таким образом, если всем неопределённым пока указателям присвоить нулевое значение, а программу написать так, чтобы она не использовала нулевые указатели, то можно избежать случайного обращения к неинициализированному указателю. Это весьма полезный приём, которым стоит пользоваться.

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

float *p = 0;                     //p – теперь нулевой указатель

Для отбраковки нулевых указателей пользуются предложениями if вроде следующих:

if (p)                    // далее выполнение, если р не ноль

if (!p)                  // далее выполнение, если р ноль

 

Вопросы для самоконтроля

1. Что такое указатель? Каковы два оператора указателей?

2. Допустимо ли индексировать указатель так, как это делается с массивом? Можно ли обратиться к массиву посредством указателя?

3. Напишите программу, которая подсчитывает число прописных букв в строке и выводит результат на экран.

4. Как называется ситуация, когда один указатель указывает на другой указатель?

5. Напишите программу с использованием указателя, которая запрашивает у пользователя две строки, а затем сравнивает эти строки, не обращает внимание на регистр букв. В этом случае «ок» и «ОК» будут считаться равными.

6. Каково значение нулевого указателя в С++?

 


Дата добавления: 2019-07-15; просмотров: 185; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!