null pointer constant, (void*)0
0 주소를 의미함.
포인터 변수에 넣으면, 0 주소를 넣는 용도로 사용되지만, 일반 변수에도 넣을 수 있다.
즉, 포인터 변수에 NULL을 넣으면, 주소값이 없는 0x00를 가리키는데
일반 변수에 NULL을 할당하면, 일반 변수를 0으로 초기화하는 거랑 같음. 주소값도 당연히 존재함.
int a = NULL;
int b = 0;
둘 모두 동일한 결과를 나타낸다.
NULL을 사용하면 이렇게 가끔 혼동이 올 때가 있다.
이런 이상하고 애매모호한 문제를 방지하기 위해 nullptr을 사용한다.
nullptr은 포인터에만 사용 가능하여, 포인터 변수를 초기화할 때 사용한다.
때문에... 포인터를 초기화할 때에는 NULL이 아니라 그냥 nullptr을 쓰면 된다.
그럼 NUL은 뭘까?
NULL이나 nullptr처럼 초기화할 때 사용하는 것은 아니고,
아스키코드의 첫 번째 문자열이다.
문자열을 표현할 때, 문자열의 끝을 표기하기 위해 '\0'이 삽입되는데, 이게 바로 NUL인 것이다.
참고