確かCではNULLが0か(void*)0にしてたが、C++だと型変換が厳しくなり、
NULLを(void*)0にするとc=(char*)NULLと
書かないといけなくなるから0にしたという話だったと思う。

0はC/C++どちらでもキャストしないでいいはず。(int* p = 0とか大丈夫でしょ)

いずれにしてもc=(char*)NULLと書く必要はない気がする。