[완료]NULL 포인터에 대해서 질문입니다.

loopbit@naver.com의 이미지

널이 꼭 0이 아니고 해당 임플리멘테이션마다 다른 값으로 정의될 수 있다고 알았습니다.

그리고 보통 힙에 있는 주소 반환받고 검사를 할 때 !연산자를 이용해서 하면 안 될 수도 있겠네요??
예를 들어 연결리스트에서,

pList = createList( );
if( ! pList )
goto err;

이런 식으로 하면 널값이 0이 아닌 임플리멘테이션에서는 다른 행동을 할 수도 있겠네요? 보통 !pList 이런 식으로 써왔는데 이식성을 고려하면 반드시 (! pList) 문장을 (pList == NULL) 이런 문장으로 비교를 해야 하는 건가요?

winner의 이미지

앞에 질문은 솔직히 저도 정확히 몰라서 안 썼습니다만...
C를 심층적으로 공부하실 때에는 cinsk 님의 C FAQs(http://www.cinsk.org/cfaqs/index-ko.html) 번역을 같이 찾아보시기 바랍니다.
질문하신 것은 http://www.cinsk.org/cfaqs/html/node7.html#5.3 에 나옵니다.

이런 것을 보면 약간 황당한 것이 C95는 bool 형식을 제공하지 않지만 C95 표준에 부합하는 compiler는 내부적으로 bool 형식을 갖추고 있다는 뜻이 됩니다.

loopbit@naver.com의 이미지

엄청난 공부거리네요! 감사합니다.
(C언어 펀터멘탈 맞습니다. 어떻게 아셨는지..?)

kaeri17의 이미지

C++ 표준에는 NULL 대신에 0을 가리키는 포인터값이 NULL로 정의되어 있는데요... (http://www2.research.att.com/~bs/bs_faq2.html#null)
C의 경우는 다음을 참고 (http://www.lysator.liu.se/c/c-faq/c-1.html)

즉, 요약하자면 NULL포인터의 내부 표현은 0이 아닐 수 있지만, 언어차원에서는 0이 NULL이라는 뜻이네요.

loopbit@naver.com의 이미지

한 마디로 널이 무슨 값인지는 신경 안 써도 되는 문제로군요!
감사합니다.