(void*)0
- это нулевой указатель, он же NULL
(который на самом деле является макросом, определенным в нескольких заголовочных файлах, например, stddef.h
или stdio.h
, что в основном равнозначно (void*)0
).
Обновление:
Как объяснить нулевые указатели и их полезность?По сути, это специальное значение, которое говорит: «Этот указатель нигде не указывает» или «Этот указатель не установлен на допустимую ссылку на объект».
Историческая справка: Тони Хоар, который, как говорят,изобрел нулевые ссылки в 1965 году, как известно, сожалеет об этом изобретении и поэтому называет его «Ошибка в миллиард долларов» :
Всякий раз, когда вы работаете с указателями, вы должны убедиться, что никогда не разыменовываетнулевой указатель (потому что он не ссылается ни на что по определению).Если вы все равно это сделаете, вы получите либо аварийное завершение программы, либо общую ошибку защиты, либо, по крайней мере, неожиданное поведение программы.