New answers tagged


First some background ... The macros are NULL which expands to an implementation-defined null pointer constant; C11 ยง7.19 3 NULL typically is an integer constant 0 or (void*)0 or the like. It may have a different implementation or type - It could be ((int*) 0xDEADBEEF) as strange as that may be. NULL might be type int. It might be type void * or ...


Chapter and verse: Pointers ... 3     An integer constant expression with the value 0, or such an expression cast to type void *, is called a null pointer constant. 66) If a null pointer constant is converted to a pointer type, the resulting pointer, called a null pointer, is guaranteed to compare unequal to a pointer to ...


In C, NULL is a macro that expands either to 0 or (void*)0 (or something that has a similar effect). In the first case, you can not differentiate between NULL and 0, because they are literally the same. In the second case, your code will cause a compile error, because you can't compare an integer variable with a pointer.

Top 50 recent answers are included