In den frühen Tagen von C ++, als es auf C geschraubt wurde, konnten Sie NULL nicht so verwenden, wie es definiert wurde (void*)0
. Sie konnten keinem anderen Zeiger als NULL zuweisen void*
, was es irgendwie nutzlos machte. Damals wurde akzeptiert, dass Sie 0
(Null) für Nullzeiger verwendet haben.
Bis heute habe ich weiterhin Null als Nullzeiger verwendet, aber die um mich herum bestehen darauf, sie zu verwenden NULL
. Ich persönlich sehe keinen Vorteil darin, einem NULL
vorhandenen Wert einen Namen ( ) zu geben - und da ich auch gerne Zeiger als Wahrheitswerte teste:
if (p && !q)
do_something();
Dann ist die Verwendung von Null sinnvoller (wie wenn Sie verwenden NULL
, können Sie nicht logisch verwenden p && !q
- Sie müssen explizit mit Null vergleichen NULL
, es sei denn, Sie nehmen an , dass NULL
Null ist. In diesem Fall warum verwenden NULL
).
Gibt es einen objektiven Grund, Null gegenüber NULL zu bevorzugen (oder umgekehrt), oder ist alles nur eine persönliche Präferenz?
Bearbeiten: Ich sollte hinzufügen (und ursprünglich sagen), dass ich mit RAII und Ausnahmen selten Null / NULL-Zeiger verwende, aber manchmal braucht man sie immer noch.