Predefined null pointer constant (since C23)
From cppreference.net
目录 |
语法
nullptr
|
(自 C23 起) | ||||||||
说明
关键字
nullptr
表示预定义的 null 指针常量。它是一个类型为
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); // OK g(NULL); // OK g(0); // OK auto cloned_nullptr = nullptr; g(cloned_nullptr); // OK [[maybe_unused]] auto cloned_NULL = NULL; // g(cloned_NULL); // 由实现定义:可能通过 [[maybe_unused]] auto cloned_zero = 0; // g(cloned_zero); // 错误 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 标准 (ISO/IEC 9899:2024):
-
- 6.4.4.6 预定义常量 (p: 66)
另请参阅
|
实现定义的空指针常量
(宏常量) |
|
|
(C23)
|
预定义空指针常量
nullptr
的类型
(类型定义) |
|
C++ documentation
for
nullptr
|
|