Пространства имён
Варианты
Действия

Предопределённая константа нулевого указателя (начиная с C23)

Материал из cppreference.com
 
 
 
 

Синтаксис

nullptr (начиная с C23)

Объяснение

Ключевое слово nullptr обозначает предопределённую константу нулевого указателя. Это не левостороннее значение типа nullptr_t. 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);         // Отлично
    g(NULL);            // Отлично
    g(0);               // Отлично

    puts("-----------------");

    auto cloned_nullptr = nullptr;
    auto cloned_NULL    = NULL;
    auto cloned_zero    = 0;
    g(cloned_nullptr);  // Отлично
//  g(cloned_NULL);     // ОШИБКА
//  g(cloned_zero);     // ОШИБКА

    puts("-----------------");

    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*

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

nullptr

Ссылки

  • Стандарт C23 (ISO/IEC 9899:2023):

См. также

константа нулевого указателя, определяемая реализацией
(макроконстанта) [править]
тип предопределённой константы — нулевого указателя nullptr
(определение типа) [править]
Morty Proxy This is a proxified and sanitized view of the page, visit original site.