Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


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

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.

 

 

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