事前定義されたヌルポインタ定数 (C23 以降)
From cppreference.com
目次 |
[編集] 構文
nullptr
|
(C23以降) | ||||||||
[編集] 説明
キーワード nullptr は、事前定義されたヌルポインタ定数を表します。これは nullptr_t 型の非l値です。nullptr は、ポインタ型または bool に変換でき、その結果はそれぞれ、その型のヌルポインタ値または false になります。
[編集] キーワード
[編集] 例
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) | |
| (C23) |
事前定義されたヌルポインタ定数 nullptr の型 (typedef) |
| C++ のドキュメント (nullptr)
| |