Trong những ngày đầu của C ++ khi nó được bắt đầu trên C, bạn không thể sử dụng NULL vì nó được định nghĩa là (void*)0. Bạn không thể gán NULL cho bất kỳ con trỏ nào khác void*, điều này làm cho nó trở nên vô dụng. Quay lại những ngày đó, người ta chấp nhận rằng bạn đã sử dụng 0(không) cho con trỏ null.
Cho đến ngày nay, tôi vẫn tiếp tục sử dụng số 0 làm con trỏ null nhưng những người xung quanh vẫn khăng khăng sử dụng NULL. Cá nhân tôi không thấy bất kỳ lợi ích nào khi đặt tên ( NULL) cho một giá trị hiện có - và vì tôi cũng muốn kiểm tra các con trỏ như các giá trị thật:
if (p && !q)
do_something();
sau đó sử dụng số 0 có ý nghĩa hơn (như trong trường hợp bạn sử dụng NULL, bạn không thể sử dụng một cách hợp lý p && !q- bạn cần so sánh rõ ràng với nhau NULL, trừ khi bạn cho NULLlà bằng không, trong trường hợp tại sao lại sử dụng NULL).
Có bất kỳ lý do khách quan nào để thích số 0 hơn NULL (hoặc ngược lại), hay tất cả chỉ là sở thích cá nhân?
Chỉnh sửa: Tôi nên thêm (và có nghĩa là ban đầu nói) rằng với RAII và các ngoại lệ, tôi hiếm khi sử dụng các con trỏ zero / NULL, nhưng đôi khi bạn vẫn cần chúng.