[완료]NULL 포인터에 대해서 질문입니다.
글쓴이: loopbit@naver.com / 작성시간: 일, 2011/03/27 - 11:59오전
널이 꼭 0이 아니고 해당 임플리멘테이션마다 다른 값으로 정의될 수 있다고 알았습니다.
그리고 보통 힙에 있는 주소 반환받고 검사를 할 때 !연산자를 이용해서 하면 안 될 수도 있겠네요??
예를 들어 연결리스트에서,
pList = createList( );
if( ! pList )
goto err;
이런 식으로 하면 널값이 0이 아닌 임플리멘테이션에서는 다른 행동을 할 수도 있겠네요? 보통 !pList 이런 식으로 써왔는데 이식성을 고려하면 반드시 (! pList) 문장을 (pList == NULL) 이런 문장으로 비교를 해야 하는 건가요?
Forums:
C 언어 펀더멘탈 읽으시나요?
앞에 질문은 솔직히 저도 정확히 몰라서 안 썼습니다만...
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 형식을 갖추고 있다는 뜻이 됩니다.
엄청난 공부거리네요! 감사합니다. (C언어 펀터멘탈
엄청난 공부거리네요! 감사합니다.
(C언어 펀터멘탈 맞습니다. 어떻게 아셨는지..?)
그런가요??
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이라는 뜻이네요.
한 마디로 널이 무슨 값인지는 신경 안 써도 되는
한 마디로 널이 무슨 값인지는 신경 안 써도 되는 문제로군요!
감사합니다.
댓글 달기