nullptr_t
來自 cppreference.com
定義於標頭檔案 <stddef.h> |
||
typedef typeof(nullptr) nullptr_t; |
(自 C23 起) | |
nullptr_t
是預定義空指標常量 nullptr 的型別。它是一種獨特的型別,本身不是指標型別。它可以隱式轉換為任何指標型別或 bool,結果分別是該型別的空指標值或 false。除了 nullptr_t
本身,沒有其他型別可以轉換或顯式轉換為 nullptr_t
。
sizeof(nullptr_t) 和 alignof(nullptr_t) 分別等於 sizeof(void*) 和 alignof(void*)。
nullptr_t
只有一個有效值,即 nullptr。nullptr 的物件表示與 (void*)0 相同。如果左值轉換產生具有不同物件表示的 nullptr_t
值,則行為是未定義的。
[編輯] 示例
演示 nullptr_t
是一種獨特的型別。
執行此程式碼
#include <stddef.h> #include <stdio.h> #define DETECT_NULL_POINTER_CONSTANT(e) \ _Generic(e, \ void* : puts("void*"), \ nullptr_t : puts("nullptr_t"), \ default : puts("other") \ ) int main() { DETECT_NULL_POINTER_CONSTANT(((void*)0)); DETECT_NULL_POINTER_CONSTANT(0); DETECT_NULL_POINTER_CONSTANT(nullptr); }
輸出
void* other nullptr_t
[編輯] 參考資料
- C23 標準 (ISO/IEC 9899:2024)
- 7.21.2 nullptr_t 型別 (p: 315-316)
[編輯] 另請參閱
實現定義的空指標常量 (宏常量) | |
C++ 文件,關於 nullptr_t
|