6 ms·
In C++, nullptr.
by CopperWing 8y ago
In C++, nullptr.
- cjs_2 8y agoAnd in C?
- craigching 8y agoIn C, always use 0 and check for 0, it's the only safe way. For C++, it depends on the standard you're using.
- guipsp 8y agoBut 0 isn't always null right?
- cjensen 8y agoLiteral zero in a pointer context is interpreted by the compiler to mean "the null pointer." The compiler then compiles the null pointer into the code.
- guipsp 8y agoBut then how do you get a pointer to zero (not null) in those systems?
- cjensen 8y agoFirst, that's inherently non-portable. That aside... On most systems, the null pointer happens to be a pointer to address zero. For other systems, e.g. 8086 16-bit mode, you can create a intptr_t (which is the same size as a pointer) and set it to zero. Then cast it to a pointer. Such casting is always done bitwise, so it will work. The compiler knows to turn the following into the null pointer void *p = (void *) 0; but the compiler will NOT turn the following into a null pointer void *p = (void *) (uintptr_t) 0; because the literal 0 is now in an integer context, not a pointer context.
- deleted 8y ago[deleted]
- fanf2 8y agoExcept when calling a varargs function, when you need to cast to the correct pointer type