null在c语言中是表示空指针,其定义:#define NULL ((void *)0)
,null实际上是一个void * 的指针,在赋值使用过程中,null可以隐式转换为相应的类型。
int *p =null;
C++中NULL是无法隐式转换为其他类型的,在C++中,null表示0,定义:#define NULL 0
#ifdef __cplusplus ---简称:cpp c++ 文件
#define NULL 0
#else
#define NULL ((void *)0)
#endif
C++11中nullptr表示一个空指针,可以转换为任意类型的指针类型。
void fun(int i){cout<<"1";};
void fun(char *p){cout<<"2";};
int main()
{
fun(NULL); //输出1,c++中NULL为整数0
fun(nullptr);//输出2,nullptr 为空指针常量。是指针类型
}
总结:在C++中(void *)不能转换为任意类型的指针,即int *p = (void *)
时错误的,但int *p = nullptr
是正确的。