Предопределённая константа нулевого указателя (начиная с 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*
Ключевые слова
Ссылки
- Стандарт C23 (ISO/IEC 9899:2023):
См. также
| константа нулевого указателя, определяемая реализацией (макроконстанта) | |
(C23) |
тип предопределённой константы — нулевого указателя nullptr (определение типа) |
Документация C++ по nullptr
|