Predefined null pointer constant (since C23)
From cppreference.net
Table des matières |
Syntaxe
nullptr
|
(depuis C23) | ||||||||
Explication
Le mot-clé
nullptr
désigne une constante de pointeur nul prédéfinie. C'est une
non-lvalue
de type
nullptr_t
.
nullptr
peut être
converti
en types pointeur ou
bool
, où le résultat est la valeur de pointeur nul de ce type ou
false
respectivement.
Mots-clés
Exemple
Démontre qu'une copie de
nullptr
peut également être utilisée comme constante de pointeur nul.
Exécuter ce code
#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); // défini par l'implémentation: peut-être OK [[maybe_unused]] auto cloned_zero = 0; // g(cloned_zero); // Erreur DETECT_NULL_POINTER_CONSTANT(((void*)0)); DETECT_NULL_POINTER_CONSTANT(0); DETECT_NULL_POINTER_CONSTANT(nullptr); DETECT_NULL_POINTER_CONSTANT(NULL); // défini par l'implémentation }
Sortie possible :
Function g called Function g called Function g called Function g called void* integer nullptr_t void*
Références
- Norme C23 (ISO/CEI 9899:2024) :
-
- 6.4.4.6 Constantes prédéfinies (p: 66)
Voir aussi
|
constante de pointeur nul définie par l'implémentation
(macro constante) |
|
|
(C23)
|
type de la constante de pointeur nul prédéfinie
nullptr
(typedef) |
|
Documentation C++
pour
nullptr
|
|