預定義空指標常量 (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); // OK g(NULL); // OK g(0); // OK auto cloned_nullptr = nullptr; g(cloned_nullptr); // OK [[maybe_unused]] auto cloned_NULL = NULL; // g(cloned_NULL); // implementation-defined: maybe OK [[maybe_unused]] auto cloned_zero = 0; // g(cloned_zero); // Error DETECT_NULL_POINTER_CONSTANT(((void*)0)); DETECT_NULL_POINTER_CONSTANT(0); DETECT_NULL_POINTER_CONSTANT(nullptr); DETECT_NULL_POINTER_CONSTANT(NULL); // implementation-defined }
可能的輸出
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 的型別 (typedef) |
C++ 文件 關於 nullptr
|