名前空間
変種
操作

事前定義されたヌルポインタ定数 (C23 以降)

From cppreference.com
< c‎ | language

目次

[編集] 構文

nullptr (C23以降)

[編集] 説明

キーワード nullptr は、事前定義されたヌルポインタ定数を表します。これは nullptr_t 型の非l値です。nullptr は、ポインタ型または 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)

[編集] 関連項目

処理系定義のヌルポインタ定数
(macro constant) [編集]
事前定義されたヌルポインタ定数 nullptr の型
(typedef) [編集]
English 日本語 中文(简体) 中文(繁體)