변수를 NULL로 초기화하는 것과 0으로 초기화하는 것의 차이가 궁금했다. CS50 코칭스터디에서 코치님께 질문을 드렸고 알려주신 블로그 글을 보며 정리해보았다!
NULL의 정확한 명칭은 널 포인터이며 원형은 (void*)0이다. 널 포인터는 일반적으로 접근할 수 없는 메모리 영역인 0을 가리키는 포인터로, 포인터가 정의되었지만 아직 무엇을 가리킬지 모를 때 사용한다.
포인터를 선언과 동시에 초기화해주지 않으면 쓰레기값(랜덤한 주소)을 가지게 되고, 그 쓰레기값이 권한이 없는 곳을 가리키는데 이를 사용하게되면 큰 문제가 생길 수 있다. 그래서 포인터를 선언할 때 아직 값을 정할 수 없는 경우에는 NULL로 초기화해주어야하는 것이다.
0은 일반 변수를 초기화할 때나 문자열의 끝을 알릴 때 사용한다. 아스키코드에 따르면 0 = NUL = \0 이다.
NULL의 define값이 0이기때문에 NULL과 0은 같은 결과값을 내지만 의미상 구분이 필요하다. NULL은 널 포인터이기 때문에 포인터를 초기화할 때 값이 비어있다를 알려주는 의미로 사용하고! 0은 일반 변수의 초기화에 사용하면 된다!
<참고 블로그>