预定义空指针常量 (C23 起)
来自cppreference.com
语法
nullptr
|
(C23 起) | ||||||||
解释
关键词 nullptr
代表预定义的空指针常量。它是 nullptr_t 类型的非左值。 nullptr
能转换到指针类型或 bool ,结果分别为该类型的空指针值或 false 。
示例
演示 nullptr
的副本亦能用作空指针常量。
运行此代码
#include <stddef.h> #include <stdio.h> void g(int*) { puts("Function g called"); } #define DETECT_NULL_POINTER_CONSTANT(e) \ _Generic(e, \ void* : puts("void*"), \ nullptr_t : puts("nullptr_t"), \ default : puts("integer") \ ) int main() { g(nullptr); // 好 g(NULL); // 好 g(0); // 好 puts("----------------"); auto cloned_nullptr = nullptr; auto cloned_NULL = NULL; auto cloned_zero = 0; g(cloned_nullptr); // 好 // g(cloned_NULL); // 错误 // g(cloned_zero); // 错误 puts("----------------"); DETECT_NULL_POINTER_CONSTANT(((void*)0)); DETECT_NULL_POINTER_CONSTANT(0); DETECT_NULL_POINTER_CONSTANT(nullptr); DETECT_NULL_POINTER_CONSTANT(NULL); // 实现定义 }
可能的输出:
Function g called Function g called Function g called ---------------- Function g called ---------------- void* integer nullptr_t void*
关键词
参阅
实现定义的空指针常量 (宏常量) | |
(C23) |
预定义空指针常量 nullptr 的类型 (typedef) |