Browse DevX
Sign up for e-mail newsletters from DevX

Tip of the Day
Home » Tip Bank » C++
Language: C++
Expertise: All
Feb 13, 1999



Building the Right Environment to Support AI, Machine Learning and Deep Learning

The Underlying Representation of NULL

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.
Danny Kalev
Comment and Contribute






(Maximum characters: 1200). You have 1200 characters left.



Thanks for your registration, follow us on our social networks to keep up-to-date