devxlogo

Assign Zero or NULL to a Pointer

Assign Zero or NULL to a Pointer

Question:
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.

Answer:
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-admin

Share the Post: