Predefined null pointer constant (since C23)
From cppreference.net
Содержание |
Синтаксис
nullptr
|
(начиная с C23) | ||||||||
Объяснение
Ключевое слово
nullptr
обозначает предопределённую константу нулевого указателя. Это
не-lvalue
типа
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); // OK g(NULL); // OK g(0); // OK auto cloned_nullptr = nullptr; g(cloned_nullptr); // OK [[maybe_unused]] auto cloned_NULL = NULL; // g(cloned_NULL); // зависит от реализации: возможно OK [[maybe_unused]] auto cloned_zero = 0; // g(cloned_zero); // Ошибка 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:2024):
-
- 6.4.4.6 Предопределенные константы (стр: 66)
Смотрите также
|
определяемая реализацией константа нулевого указателя
(макрос-константа) |
|
|
(C23)
|
тип предопределенной константы нулевого указателя
nullptr
(typedef) |
|
Документация C++
для
nullptr
|
|