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 NULL
là 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.