O macro NULL especifica um ponteiro que não aponta para nenhum endereço.
No C, o macro resolve para o inteiro 0. Esse inteiro pode ou não pode ser interpretado como void *.
#define NULL 0
ou
#define NULL (void *) 0
No C++, o macro sempre resolve para o inteiro 0 (a primeira versão do macro acima).
#define NULL 0