Saya baru saja membaca Dapatkah saya menggunakan NULL sebagai pengganti nilai 0?
Singkatnya dalam jawaban disebutkan bahwa penggunaan NULL sebagai pengganti nilai 0
tidak disarankan dan akan mengarah ke UB.
Namun di Apakah aman untuk mengasumsikan bahwa konstanta NULL adalah nol?, singkatnya dikatakan bahwa asumsi if(!ptr)//ptr is a pointer
tidak sepenuhnya salah .
Saya tahu isi pertanyaannya berbeda, tetapi bagaimana menjelaskan bahwa menggunakan NULL sebagai pengganti 0 adalah salah, sedangkan if(!ptr)
benar? Karena if(!ptr)
setara dengan if(ptr==0)
(saya berasumsi ini benar, tidak yakin).
Selain itu, saya telah menggunakan if(ptr==0)
dan tidak pernah salah bagi saya (untuk memeriksa apakah ptr
adalah NULL), dan saya telah menetapkan 0
ke penunjuk ptr
dan ketika saya men-debug kode saya ptr
adalah NULL< /kuat>. Apakah kedua pengalaman ini aman?