命名空间
变体
操作

nullptr,指针字面量 (自 C++11 起)

来自 cppreference.com
< cpp‎ | 语言
 
 
C++ 语言
一般主题
流程控制
条件执行语句
if
迭代语句(循环)
for
range-for (C++11)
跳转语句
函数
函数声明
Lambda 函数表达式
inline 说明符
动态异常规范 (直到 C++17*)
noexcept 说明符 (C++11)
异常
命名空间
类型
说明符
const/volatile
decltype (C++11)
auto (C++11)
constexpr (C++11)
consteval (C++20)
constinit (C++20)
存储持续时间说明符
初始化
 
 

内容

[编辑] 语法

nullptr

[编辑] 解释

关键字 nullptr 表示指针字面量。它是一个 右值,类型为 std::nullptr_t。存在从 nullptr 到任何指针类型和任何指向成员的指针类型的空指针值的 隐式转换。类似的转换也存在于任何空指针常量,包括类型为 std::nullptr_t 的值以及宏 NULL

[编辑] 关键字

nullptr

[编辑] 示例

演示即使 nullptr 不再是字面量,它仍然保留空指针常量的意义。

#include <cstddef>
#include <iostream>
 
template<class T>
constexpr T clone(const T& t)
{
    return t;
}
 
void g(int*)
{
    std::cout << "Function g called\n";
}
 
int main()
{
    g(nullptr);        // Fine
    g(NULL);           // Fine
    g(0);              // Fine
 
    g(clone(nullptr)); // Fine
//  g(clone(NULL));    // ERROR: non-literal zero cannot be a null pointer constant
//  g(clone(0));       // ERROR: non-literal zero cannot be a null pointer constant
}

输出

Function g called
Function g called
Function g called
Function g called

[编辑] 参考

  • C++23 标准 (ISO/IEC 14882:2024)
  • 7.3.12 指针转换 [conv.ptr]
  • C++20 标准 (ISO/IEC 14882:2020)
  • 7.3.12 指针转换 [conv.ptr]
  • C++17 标准 (ISO/IEC 14882:2017)
  • 7.11 指针转换 [conv.ptr]
  • C++14 标准 (ISO/IEC 14882:2014)
  • 4.10 指针转换 [conv.ptr]
  • C++11 标准 (ISO/IEC 14882:2011)
  • 4.10 指针转换 [conv.ptr]

[编辑] 另请参阅

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