반응형
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)
반응형
'C > Study' 카테고리의 다른 글
[C] 소수 구하는 프로그램 (0) | 2024.12.16 |
---|---|
[C] 10진수를 2진수로 출력하기 (0) | 2024.12.15 |
[C] 메모리 공간의 할당과 초기화가 동시에 일어나는 상황 (0) | 2024.12.15 |
[C] scanf 함수 char형 하나의 문자 입력받을 시 발생하는 문제 (0) | 2024.12.15 |
[C] C언어의 메모리 구조 (스택, 힙, 데이터, 코드 영역) (0) | 2024.12.15 |