预定义空指针常量 (C23 起)

来自cppreference.com
< c‎ | language


目录

[编辑]语法

nullptr(C23 起)

[编辑]解释

关键词 nullptr 代表预定义的空指针常量。它是 nullptr_t 类型的非左值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); // 由实现定义:可能 OK   [[maybe_unused]]auto cloned_zero =0;// g(cloned_zero); // 错误   DETECT_NULL_POINTER_CONSTANT(((void*)0)); DETECT_NULL_POINTER_CONSTANT(0); DETECT_NULL_POINTER_CONSTANT(nullptr); DETECT_NULL_POINTER_CONSTANT(NULL);// 实现定义}

可能的输出:

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 Predefined constants (第 66 页)

[编辑]参阅

实现定义的空指针常量
(宏常量)[编辑]
预定义空指针常量 nullptr 的类型
(typedef)[编辑]
nullptr 的 C++ 文档
close