NULL has to be defined as 0 since that is a special value for pointers (guaranteed by the C language spec), which is just what NULL is meant to represent.