Bonjour tous le monde
Comment declare-on un Null pointer en c++ ?
Bonjour tous le monde
Comment declare-on un Null pointer en c++ ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2T* ptr = NULL;
Salut mima_mine,
Je crois que "= 0" est plus utilisé que NULL.
À la limite que NULL est utilisé principalement dans le cas d'un pointeur mis à NULL. Pour tous les autres cas, ce serait plutôt "=0".
Bref, les deux se font et reviennent plutôt au même à ma connaissance!
Non, parce que t'es pas sur que le define sur ton compilo ressemble à ça :
#define NULL 0
En pratique, le define n'a pas le droit de ressembler à autre chose à partir du moment où tu utilise un tant soit peu la bibliothèque standard...
Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.
Bientôt:
En attendant, j'utilise 0 plutôt que NULL. Je trouve que ça a plus de gueule avec 0
Code : Sélectionner tout - Visualiser dans une fenêtre à part T* ptr = nullptr;
Salut,
A vrai dire, je suis pas loin d'estimer préférable d'utiliser NULL autant que faire se peut... Du moins, en attendant que la nouvelle norme nous donne nullptr.
La raison est bien simple: NULL est clairement associé à un pointeur dans l'esprit des gens, alors que 0 est plutôt associé à... une valeur numérique.
Comme nous savons tous qu'il n'y a pas forcément référence, dans la manière de nommer une variable, au fait que c'est en réalité un pointeur, et non une variable numérique quelconque, je me dis que NULL présente l'énorme avantage d'être plus explicite et de fournir une "piqure de rappel" à l'utilisateur sur le fait qu'il est occupé à manipuler un pointeur...
Maintenant, je n'en suis malgré tout pas à faire la chasse à tous les
T * ptr=0; pour les remplacer par T * ptr=NULL;![]()
A méditer: La solution la plus simple est toujours la moins compliquée
Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
Compiler Gcc sous windows avec MinGW
Coder efficacement en C++ : dans les bacs le 17 février 2014
mon tout nouveau blog
+1 toutefois. J'avais écrit un petit truc dessus : http://blog.developpez.com/alp/p6254...le-pointeur-n/
Mon blog anglais - Mes articles et critiques de livres - FAQ C++0x, avec liste des nouveautés - Conseils sur le C++ - La meilleure FAQ du monde - Avant de créer des classes que vous réutiliserez, regardez si ça n'existe pas déjà - Le site du comité de normalisation du C++
Le guide pour bien débuter en C++ - Cours et tutoriels pour apprendre C++
Hum, j'ai rêver donc car il me semble avoir croisé du :
#define NULL (void*)0
Quoiqu'il en soit 0 ou NULL c'est pas bien méchant par contre du int i = NULL; :') ça c'est bien moche.
Sinon pour revenir sur ma réponse : le PO faisant une grammaire du C++ il me semble, j'ai étais directement à l'essentiel plutôt que de débattre sur les bonnes pratiques ou non (vu que ça l'intéresse pas).
Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.
Petit up, je suis retombé dessus finalement et en effet c'est la macro du C qui est comme ça :En C++ c'est juste 0 pour la bonne raison qu'avec la macro au dessus ce genre de chose ne compilerait pas :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2#define NULL ((void*)0)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 std::vector<int>* foo = NULL; // cannot convert void* to std::vector<int, allocator<int>>*
En C, ce peut etre 0 ou (void*)0 et on peut remplacer 0 par n'importe quelle constante entiere de valeur nulle (ce qu'on peut faire en C++ aussi); 0L a deja ete utilise.
http://www.bourguet.org/v2/clang/lib...602aa8c308d0c4
Partager