Using NULL or 0 for Pointers in C : Personal Preference or Objective Reason?
In the early days of C , the question of whether to use NULL or 0 as the representation for null pointers was a practical dilemma. However, with the evolution of the language, this decision has evolved into more a matter of preference.
Zero vs. NULL
Historically, some programmers used 0 as a null pointer, while others preferred the symbolic constant NULL, defined as a void pointer with the value 0. The latter approach gained popularity as a way to avoid confusion with numeric values.
However, as Stroustrup explains in his C Style and Technique FAQ, "In C , the definition of NULL is 0, so there is only an aesthetic difference." This means that both 0 and NULL evaluate to the same value.
Personal Preferences
The choice between 0 and NULL ultimately boils down to personal preference. Some programmers argue that using 0 makes more sense in boolean contexts, as it allows for logical comparisons like if (p && !q). Conversely, others prefer NULL to explicitly indicate a null value and avoid potential misunderstandings.
C 11 and Beyond
With the introduction of C 11, a new keyword, nullptr, was created specifically for representing null pointers. nullptr provides type safety and can be used in place of both 0 and NULL, offering a more consistent and explicit solution.
Conclusion
While there is no hard rule regarding the use of NULL or 0, it is generally not a major concern. The key is to maintain consistency within a codebase and to use the method that best suits the programmer's preferences and style.
The above is the detailed content of NULL or 0 for Pointers in C : Preference or Objective Necessity?. For more information, please follow other related articles on the PHP Chinese website!