C and C++ define NULL differently:
#define NULL 0; // A typical definition of NULL in C++ #define NULL ((void*)0) // C defines NULL this way
Why is it defined differently in the two languages? Pointers in C++ are strongly typed, unlike pointers in C. Thus, void* cannot be implicitly converted to any other pointer type without an explicit cast. If C++ retained C’s convention, a C++ statement such as:
char * p = NULL;
would be expanded into something like:
char * p = (void*) 0; // compile time error: incompatible pointer types
Since 0 is the universal initializer for all pointer types in C++, it is used instead the traditional C convention, and in fact, many programmers simply use 0 as a pointer initializer.