ฉันได้อ่านเมื่อเร็วๆ นี้ ฉันสามารถใช้ 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< /แข็งแกร่ง>. ประสบการณ์ทั้งสองนี้ปลอดภัยหรือไม่?