名稱空間
變體
操作

預定義空指標常量 (C23 起)

來自 cppreference.com
< c‎ | 語言

目錄

[編輯] 語法

nullptr (自 C23 起)

[編輯] 解釋

關鍵詞 nullptr 表示一個預定義的空指標常量。它是一個 非左值,型別為 nullptr_tnullptr 可以 轉換 為指標型別或 bool,結果分別是該型別的空指標值或 false

[編輯] 關鍵詞

nullptr

[編輯] 示例

演示 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)

[編輯] 另請參閱

實現定義的空指標常量
(宏常量) [編輯]
預定義空指標常量 nullptr 的型別
(typedef) [編輯]
C++ 文件 關於 nullptr