중화사전망 - 구한말 사전 - C 언어에서 null은 무엇을 의미하나요?

C 언어에서 null은 무엇을 의미하나요?

C 언어에서 null은 일반 0 값 또는 유형이 지정되지 않은 0 값(void 0)을 나타냅니다.

NULL과 0의 값은 같지만 목적과 식별의 용이성을 위해 포인터와 객체에는 NULL을, 숫자값에는 0을 사용합니다.

문자열의 끝은 값도 0인 '\0'을 사용하는데, 포인터도 아니고 일반 숫자도 아닌 문자열의 끝임을 한눈에 알 수 있습니다. 값.

다른 시스템에서는 NULL이 항상 0이 되는 것은 아닙니다. NULL은 단지 null 값을 나타내며, 이는 대부분의 시스템에서 0은 사용되지 않는 주소로 간주됩니다. #define NULL0과 같은 정의가 있습니다.

그러나 항상 그런 것은 아닙니다. 일부 시스템에서는 0 주소를 NULL로 처리하지 않고 다른 주소를 사용합니다. 따라서 특히 일부 크로스 플랫폼에서는 NULL과 0을 동일시하지 마십시오. 이것은 당신에게 재앙을 가져올 것입니다.

확장 정보:

컴퓨터 언어에서는 데이터 너비(점유된 바이트 수)와 데이터 인코딩을 결정하기 위해 일반적으로 유형 정의가 있습니다. 예를 들어 C에서는 bool입니다. 언어는 8비트 논리 값(단일 바이트), int는 16비트 정수(더블 바이트), long은 32비트 정수(4바이트), float는 32비트 부동 소수점 숫자(4바이트)입니다. double은 64비트 부동 소수점 숫자(8바이트)입니다.

따라서 데이터 유형은 데이터 너비와 데이터 인코딩을 정의하므로 엄밀히 말하면 16비트 정수의 0은 32비트 정수의 0과 다르며 부동 소수점의 0은 다릅니다. 이유 데이터 너비가 다릅니다. 특히 부동 소수점 숫자 0은 절대 0 값이 아니며 0.0000000000000001이라는 매우 작은 숫자일 수 있습니다.

그러나 잘못된 값을 나타내기 위해 명확한 범용 또는 일반 값 0이 필요한 경우가 있습니다. 예를 들어 포인터에 사전 유효 주소가 할당되지 않았음을 나타내기 위해 0 값을 설정합니다. 코드 모호성, 가독성을 위한 것입니다(정의되지 않은 포인터를 의미한다는 것을 한눈에 알 수 있습니다).

데이터 유형이 정의되어 있지 않기 때문에 특정 데이터 너비와 인코딩이 없습니다. 16비트 변수에 NULL을 할당하면 16비트는 모두 0이 됩니다. 값은 32입니다. 모두 0이며 부동 소수점 숫자와 같은 정밀도 오류는 없습니다. 이것이 가상 유형의 의미이며 모든 컴파일러는 이 규칙을 인식합니다.