|
말씀하신대로 0과 NULL은 같은 의미입니다.
select에서 처음 인자인 소켓 범위만 제외하고는 나머지는 전부 포인터 인자입니다.
포인터 인자는 스택으로 전송될때 실질적으로 int 형인 4Byte 숫자로 전송이 되게 됩니다.
int형에서는 0은 거짓, 0을 제외한 수는 모두 참입니다.
NULL은 거짓과 동일한 의미로 사용됩니다.
즉, 함수로 넘어가는 int 형의 포인터 값은 0이나 NULL이나 시스템에서 받아들일때는
똑같이 받아들인다는 것입니다.
책은 해당 저자의 경험에 의해서 집필된 것이므로, 사람이라면 누구나 틀린 지식을
가지고 있을 수 있다고 생각합니다. 저자의 의도는 잘 모르겠지만, 만약 0과 NULL이
틀리다 라는 단순 문제라면, 저자분이 약간의 실수를 하셨는지도 모르겠습니다.
컴퓨터책은 상당히 많이 틀린 곳이 존재하는 서적중에 하나 같습니다... :)
물론 제가 간혹 다는 답변들 중에서도 틀린 곳이 허다하지만요.. ㅋㅋ
cuperido
김상면 님이 쓰신 글 :
: 저는 NULL과 0은 같다고 알고 있습니다.
: 그런대 소켓에서 select는 NULL과 0이 다르다고 합니다.
: 무신 말인고 하니
: select(모시기,뭐시기,뭐라고,NULL);
: select(모시기,뭐시기,뭐라고,0);
: 다르게 동작한다고 합니다.
: 어케 다른가요 분명히 stdlib.h에 #define NULL 0 이라고 선언되어 있다는걸로 아는데
: 저자가 잘못 기술하지는 않았겠고 이게 어케 된거지요
:
: 그럼
|