4 ms·
This is only true in C, which is part of why C is less insane than C++. The two languages should not be conflated anymore.
by grive 8y ago
This is only true in C, which is part of why C is less insane than C++.
The two languages should not be conflated anymore.
- mbel 8y agoThis is not even true in C. 0 is a "null pointer literal" when used in pointer context, this does not imply that the actual null pointer has a value of zero.
- grive 8y agoAh yes you are right, an interesting point however, 6.3.2.3 Pointers 3. An integer constant expression with the value 0, or such an expression cast to type void *, 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. 4. Conversion of a null pointer to another pointer type yields a null pointer of that type. Any two null pointers shall compare equal. Looking at the definition of NULL: 7.17 Common definitions <stddef.h> 3 The macros are NULL which expands to an implementation-defined null pointer constant; Meaning that NULL is implementation defined, but is assured by the standard to compare equal to any 0-valued pointer of any type, even if it is itself another special value.
- kps 8y agoSaying “equal to any 0-valued pointer” there can be misleading. It is true of a pointer assigned from a (foo*)0 constant, but not true of a pointer to a hardware address 0 or a pointer with bits all 0 (assuming they exist).