Значение (т. Е. Адрес), сохраненное в указателе, может находиться в одном из четырех состояний:
- Может указывать на объект.
- Может указывать наместоположение сразу после конца объекта.
- Это может быть нулевой указатель, указывающий, что он не связан ни с одним объектом.
- Может быть недопустимым;значения, отличные от предыдущих трех, являются недопустимыми.
Ошибка копирования или другой попытки доступа к значению недопустимого указателя. Как и в случае использования неинициализированной переменной, эта ошибка вряд ли будет обнаружена компилятором. Результат доступа к неверному указателю не определен. Поэтому мы всегда должны знать, является ли данный указатель действительным.
Хотя указатели в случаях 2 и 3 действительны, существуют ограничения на то, что мы можем сделать с такими указателями. Поскольку эти указатели не указывают на какой-либо объект, мы не можем использовать их для доступа к (предполагаемому) объекту, на который указывает указатель. Если мы попытаемся получить доступ к объекту с помощью таких указателей, поведение будет undefined.