C语言中对NULL的定义是:#define (void *)0.而在C++里为什么把NULL定义成: #define NULL 0呢?
C语言是比C++提前问世,对于C语言来说,它把NULL宏定义成:#define NULL (void *)0.
当我们在C环境下写代码时,比如:int *p=0;是正确的,就说明在C语言里可以把一个空指针赋值给其他类型指针,
也可以说,C语言里void*可以和任意指针进行互相隐式转换。但在C++是不允许把空指针赋值给其他类型指针!
因为这样会造成隐式转换问题,比如:
char *p ;
void *t = p;
如果void*类型可以赋值给其他类型的话,就会这样:
int *q = t;
这样就会隐式把char *转化为int *;就会造成不安全!
所以C++进行了改进。把NULL宏定义为: #define NULL 0.