Login | Register   
RSS Feed
Download our iPhone app
Browse DevX
Sign up for e-mail newsletters from DevX

Tip of the Day
Language: C++
Expertise: Beginner
Feb 24, 2000

Assign Zero or NULL to a Pointer

To initialize a pointer after deleting it, should I assign a NULL to it or zero? Are they the same in C++? I know strictly speaking, I should assign NULLs to deleted pointers. But the app I work with uses zeros instead. I wonder if I need to change them.

C and C++ define NULL differently. A typical definition of NULL in C++ looks like this:

 #define NULL 0 
Whereas in C, NULL is usually defined like this:
 #define NULL  ((void*)0) 
Why is this? Pointers in C++ are strongly-typed, unlike pointers in C. Thus, void* cannot be implicitly converted to any other pointer type without a cast operation. If C++ retained C's convention, a C++ statement such as:
  char * p = NULL; 
would be expanded into:
  /*error: incompatible pointer types*/
  char * p = (void*) 0; 
For this reason, the C++ standard requires that NULL be defined either as 0 or as 0L. In other words, NULL is just an alias for the literal zero. Therefore, you may use zero as a pointer initializer directly. There's no need to replace 0 with NULL.
DevX Pro
Comment and Contribute








