title: Why are NULL pointers defined differently in C and C++?
body: <p>In C, <code>NULL</code> is defined as <code>(void *)0</code> whereas in C++ it is <code>0</code>. Why is it so?
  In C I can understand that if <code>NULL</code> is not typecast to <code>(void *)</code> then compilers may/may not generate warning. Other than this, is there any reason?</p>