名前空間
変種
操作

nullptr_t

From 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 は、有効な値として nullptr のみを持ちます。nullptr のオブジェクト表現は、 (void*)0 のオブジェクト表現と同じです。lvalue 変換によって異なるオブジェクト表現を持つ 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 The nullptr_t type (p: 315-316)

[編集] 関連項目

処理系定義のヌルポインタ定数
(macro constant) [編集]
English 日本語 中文(简体) 中文(繁體)