c 표준에는 null pointer의 값이 0이라고 명시되어있지 않고(대부분의 환경에선 맞지만)
실제로 null pointer가 0이 아닌 환경도 세상 어딘가에 존재하긴 한다
그런 동네에서조차 int *a =0; 같은 코드는 정상 작동하는데
컴파일러가 0 리터럴을 '알아서' null pointer에 해당하는 무언가로 바꿔주기 때문이다
근데 int a = 0; int *b = (int*)a; 이딴짓은 당연히 안먹힌다 ㅎ
이게 너무 병신같다고 생각했는지 C++에서는 nullptr이 생겼다
0 리터럴이랑 템플릿/오버로딩 따위랑 잘못 엮이면 불지옥을 볼 수 있기 때문에
c++에선 NULL대신 nullptr을 애용하도록 합시다