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.

devxblackblue

About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

About Our Journalist