C/Study

[C] NULL과 널문자

MoongStory 2024. 12. 15. 14:14
반응형

NULL은 아스키코드에서 0을 의미(symbol은 NUL)하고 널문자는 '\0'이다.

문자열의 끝을 알리는건 널문자('\0')이지 NULL이 아니다.

NULL은 '\0'이 아니다.

하지만 NULL도 0이고 널문자('\n')도 0이다...

NULL을 10진수로 표현하면 0이고 널문자도 10진수로 표현하면 0이다.

그렇다면 NULL과 널문자의 차이점은...?

NULL은 상수 0을 define 해놓은 것으로 그대로 사용하면 int형 또는 void*형, 즉 4바이트의 자료형이 되지만

널문자는 char형, 즉 1바이트의 자료형이다. (맞나?)

그리고 이러한 차이 때문에 구분되어 사용되어 진다.

NULL은 주로 포인터 변수를 초기화 시킬 때... 널문자는 문자열의 끝을 알릴 때...

그래서 NULL과 널문자('\n')는 같지만 다르다.

다음은 Visual Studio 2012의 stdio.h 파일에 정의되어 있는 NULL의 정의이다.

/* Define NULL pointer value */
#ifndef NULL
	#ifdef __cplusplus
		#define NULL	0
	#else
		#define NULL	((void *)0)
	#endif
#endif

 

보는바와 같이 C에서 NULL의 정확한 정의는 (void *)0 이다.

 

NULL == (void *)0

널문자 == '\0' == ((char)0)
반응형