Pada hari-hari awal C ++ ketika dibaut di atas C, Anda tidak bisa menggunakan NULL seperti yang didefinisikan (void*)0. Anda tidak dapat menetapkan NULL ke penunjuk selain void*, yang membuatnya tidak berguna. Kembali pada masa itu, diterima bahwa Anda menggunakan 0(nol) untuk pointer nol.
Sampai hari ini, saya terus menggunakan nol sebagai pointer nol tetapi orang-orang di sekitar saya bersikeras menggunakan NULL. Saya pribadi tidak melihat manfaat apa pun untuk memberi nama ( NULL) ke nilai yang ada - dan karena saya juga suka menguji pointer sebagai nilai kebenaran:
if (p && !q)
do_something();
kemudian menggunakan nol lebih masuk akal (seperti jika Anda menggunakan NULL, Anda tidak dapat menggunakan secara logis p && !q- Anda perlu membandingkan secara eksplisit NULL, kecuali Anda menganggap NULLnol, dalam hal ini mengapa digunakan NULL).
Apakah ada alasan obyektif untuk memilih nol daripada NULL (atau sebaliknya), atau semua hanya preferensi pribadi?
Sunting: Saya harus menambahkan (dan seharusnya mengatakan) bahwa dengan RAII dan pengecualian, saya jarang menggunakan pointer nol / NULL, tetapi kadang-kadang Anda masih membutuhkannya.