>백엔드 개발 >C++ >C의 NULL 대 0: 널 포인터에 어떤 것을 사용해야 합니까?

C의 NULL 대 0: 널 포인터에 어떤 것을 사용해야 합니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-25 11:05:18517검색

NULL vs. 0 in C  : Which Should I Use for Null Pointers?

널 포인터의 딜레마: NULL 대 0

C 코딩 관행에서 널 포인터의 경우 NULL 대 0(영)입니다. 이 논의의 기원은 NULL이 (void*)0으로 정의되었던 C 초기에 있었습니다. 이 제약 조건은 void 포인터에 대한 할당을 제한하여 다소 비실용적이었습니다. 결과적으로 개발자는 0을 널 포인터로 사용하는 규칙을 채택했습니다.

C의 발전에도 불구하고 기본 설정은 지속되었습니다. 저자와 같은 일부 프로그래머는 Null 값으로의 직관적인 사용과 진리값 테스트(if (p && !q))와의 호환성 때문에 0을 선호합니다. 반대로 다른 사람들은 미학을 바탕으로 NULL을 옹호합니다.

이 계속되는 질문을 해결하기 위해 C의 창시자인 Bjarne Stroustrup의 관점을 고려해 보겠습니다. Stroustrup의 C 스타일 및 기술 FAQ에 따르면 NULL은 사실상 C의 0과 동의어이므로 개인 취향의 문제입니다. 그는 매크로를 피하기 위해 0을 사용할 것을 제안하고 사전 표준 NULL 정의가 때때로 예상치 못한 동작을 초래한다는 점을 강조합니다.

C 11에서는 null 포인터 값을 명시적으로 정의하기 위해 nullptr 키워드가 도입되었습니다. 그러나 Stroustrup은 뉘앙스에 연연하기보다는 코드 기능에 집중할 것을 권장합니다.

결국 NULL과 0 사이의 선택은 개인 취향의 문제입니다. 두 접근 방식 모두 장점이 있으며 둘 다 본질적으로 우수하지는 않습니다. 코딩 팀이나 프로젝트 내에서 일관성을 보장하는 것이 중요하지만, 한 옵션을 다른 옵션보다 확실히 선호할 객관적인 이유는 없습니다.

위 내용은 C의 NULL 대 0: 널 포인터에 어떤 것을 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.