Spec-Zone.ru › C

Предопределённая константа указателя на null (с C23)

Синтаксис

nullptr (с C23)

Объяснение

Ключевое слово nullptr обозначает предопределённую константу указателя на null. Это не-lvalue типа nullptr_t. nullptr может быть преобразован в тип указателя или bool, где результатом является значение указателя на null соответствующего типа или false соответственно.

Ключевые слова

nullptr

Пример

Демонстрирует, что копия nullptr также может использоваться как константа указателя на null.

#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*

См. также

NULL
определённая реализацией константа указателя на null
(макроконстанта)
nullptr_t
(C23)
тип предопределённой константы указателя на null nullptr
(typedef)
Документация C++ для nullptr

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/c/language/nullptr

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API