Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      nullptr, the pointer literal(since C++11)

      From cppreference.com
      <cpp‎ |language
       
       
      C++ language
      General topics
      Flow control
      Conditional execution statements
      Iteration statements (loops)
      Jump statements
      Functions
      Function declaration
      Lambda function expression
      inline specifier
      Dynamic exception specifications(until C++17*)
      noexcept specifier(C++11)
      Exceptions
      Namespaces
      Types
      Specifiers
      constexpr(C++11)
      consteval(C++20)
      constinit(C++20)
      Storage duration specifiers
      Initialization
      Expressions
      Alternative representations
      Literals
      Boolean -Integer -Floating-point
      Character -String -nullptr(C++11)
      User-defined(C++11)
      Utilities
      Attributes(C++11)
      Types
      typedef declaration
      Type alias declaration(C++11)
      Casts
      Memory allocation
      Classes
      Class-specific function properties
      Special member functions
      Templates
      Miscellaneous
       
      Expressions
      General
      Literals
      Escape sequences
      String literals
      Null pointer literal(C++11)
      User-defined literal(C++11)
      Operators
      Conversions
       

      Contents

      [edit]Syntax

      nullptr

      [edit]Explanation

      The keywordnullptr denotes the pointer literal. It is aprvalue of typestd::nullptr_t. There existimplicit conversions fromnullptr to null pointer value of any pointer type and any pointer to member type. Similar conversions exist for any null pointer constant, which includes values of typestd::nullptr_t as well as the macroNULL.

      [edit]Keywords

      nullptr

      [edit]Example

      Demonstrates thatnullptr retains the meaning of null pointer constant even if it is no longer a literal.

      Run this code
      #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}

      Output:

      Function g calledFunction g calledFunction g calledFunction g called

      [edit]References

      • C++23 standard (ISO/IEC 14882:2024):
      • 7.3.12 Pointer conversions [conv.ptr]
      • C++20 standard (ISO/IEC 14882:2020):
      • 7.3.12 Pointer conversions [conv.ptr]
      • C++17 standard (ISO/IEC 14882:2017):
      • 7.11 Pointer conversions [conv.ptr]
      • C++14 standard (ISO/IEC 14882:2014):
      • 4.10 Pointer conversions [conv.ptr]
      • C++11 standard (ISO/IEC 14882:2011):
      • 4.10 Pointer conversions [conv.ptr]

      [edit]See also

      implementation-defined null pointer constant
      (macro constant)[edit]
      (C++11)
      the type of the null pointer literalnullptr
      (typedef)[edit]
      C documentation fornullptr
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/language/nullptr&oldid=174687"

      [8]ページ先頭

      ©2009-2025 Movatter.jp