2011-03-11 4 views

답변

3

제목이 말한 것처럼 포인터가 null이 아니거나 값이 0x00000000이 아닌지 특별히 확인합니다. 포인터가 실제로 유효하지 않은 포인터 (예 : 메모리의 임의 지점을 가리키는 쓰레기 포인터 일 수 있음)를 가리킬 수도 있지만, 확인 후에는 NULL이 아닙니다.

편집 : 질문에

말씨가 변경되었다, 그러나 NULL이 아닌 truep 경우 p != 0이 반환됩니다.

4

예. C 및 C++ 표준은 0 포인터가 유효한 메모리 위치가 아니라고 지정합니다.

1

아무 것도 가리 키지 않으면 a == NULL을 의미합니다.

그러나, 에있는 최신 컴퓨터/OS는이고, NULL0으로 신뢰할 수 있습니다. 임베디드 시스템을 코딩하거나 매우 오래된 표준을 준수하는 경우에만 NULL을 사용해야합니다. 그러나 C보다 C++을 사용한다는 사실은 실제로 그것이 0임을 보장합니다.

+1

'NULL'은 (0이되는 상수 표현식) 0으로 정의됩니다. 모든 제로 적분 상수 표현식은 포인터의 비트 패턴을 구현 정의 상태로 유지하는 널 포인터로 변환 될 수 있습니다. 그러나 'NULL'은 OS와 관계없이 0으로 평가해야합니다. – GManNickG

2

예, C++에서 0은 널 포인터의 값입니다.

+2

그것은 널 포인터 상수입니다. 실제 널 포인터는 무엇이든 될 수 있습니다. – GManNickG

관련 문제