Предопределённая константа указателя на null (с C23)
Синтаксис
nullptr | (с C23) |
Объяснение
Ключевое слово nullptr обозначает предопределённую константу указателя на null. Это не-lvalue типа nullptr_t. nullptr может быть преобразован в тип указателя или bool, где результатом является значение указателя на null соответствующего типа или false соответственно.
Ключевые слова
Пример
Демонстрирует, что копия 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 (макроконстанта) |
|
|
(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