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 NULL
nol, 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.