В языке программирования C указатель NULL — это специальный тип указателя, который не указывает ни на какую допустимую ячейку памяти. Указатель NULL часто используется для обозначения отсутствия значения или нулевого объекта.

В C указатель NULL определяется как константа со значением 0. Обычно он используется при сравнении, чтобы проверить, указывает ли указатель на допустимое место в памяти.

int *ptr = NULL;
if (ptr == NULL)
   printf("ptr is a NULL pointer\n");

or

int *ptr = NULL;
if (!ptr)
   printf("ptr is a NULL pointer\n");

Доступ к памяти через указатель NULL может вызвать ошибку сегментации, которая является распространенной ошибкой времени выполнения в программах на C. Вот почему важно всегда проверять, является ли указатель NULL, прежде чем разыменовывать его.

if (ptr != NULL)
  *ptr = 5; // it is safe to use

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

Важно иметь в виду, что в C указатели NULL и указатели void — это не одно и то же. Указатель NULL указывает, что он ни на что не указывает, в то время как указатель void используется для хранения любого типа указателя данных, но без какой-либо информации о конкретном типе.