Minor nitpick: A NULL pointer need not point to memory address 0 (e.g. it could point to the highest possible address, or have a special &quot;this is a NULL pointer&quot; bit set). The C11 Standard does a little dance with &quot;null pointer&quot; and &quot;null pointer constant&quot; there, c.f. chapter 6.3.2.3:<p><i>An integer constant expression with the value 0 [...] is called a null pointer constant. 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 any object or function.</i>