名稱空間
變體
操作

nullptr_t

來自 cppreference.com
< c‎ | 型別
定義於標頭檔案 <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 只有一個有效值,即 nullptrnullptr 的物件表示與 (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