Я недавно прочитал Могу ли я использовать NULL в качестве замены значения 0?
Короче говоря, в ответах было упомянуто, что использование NULL в качестве замены значения 0
не предлагается и приведет к UB.
Но в Можно ли предположить, что константа NULL равна нулю?, короче говоря, было сказано, что предположение if(!ptr)//ptr is a pointer
не совсем неверно .
Я знаю, что содержание вопросов отличается, но как это можно объяснить, что использование NULL в качестве замены 0 неверно, а if(!ptr)
верно? Потому что if(!ptr)
эквивалентно if(ptr==0)
(я полагаю, это правильно, не уверен).
Кроме того, я использовал if(ptr==0)
, и у меня это никогда не работало неправильно (чтобы проверить, является ли ptr
NULL), и я назначил 0
указателю ptr
, и когда я отлаживал мой код, ptr
был NULL < / сильный>. Безопасны ли эти два опыта?