C ++가 C 위에 볼트로 고정되었을 때 C ++의 초기에는로 정의 된 NULL을 사용할 수 없었습니다 (void*)0
. 이외의 다른 포인터에는 NULL을 할당 할 수 없어서 void*
쓸모가 없었습니다. 그 당시에 0
는 널 포인터에 0 을 사용하는 것이 허용되었습니다 .
오늘날까지 나는 0을 널 포인터로 계속 사용했지만 내 주변 사람들은을 사용해야한다고 주장합니다 NULL
. 나는 개인적 NULL
으로 기존 값에 이름 ( ) 을 주면 아무런 이점이 없으며 포인터를 진리 값으로 테스트하고 싶습니다.
if (p && !q)
do_something();
그런 다음 0을 사용하는 것이 더 합리적입니다 (사용하는 것처럼 NULL
논리적으로 사용할 수 없음 -0이 아닌 경우 p && !q
명시 적으로 비교해야 함 ).NULL
NULL
NULL
NULL보다 0을 선호하는 객관적인 이유가 있습니까 (또는 그 반대), 아니면 모두 개인 취향입니까?
편집 : RAII와 예외를 제외하고는 0 / NULL 포인터를 거의 사용하지 않지만 때로는 여전히 포인터가 필요하다는 것을 추가해야합니다.