在C语言中,我们使用NULL表示空指针,也就是我们可以写如下代码:
int *i = NULL;
foo_t *f = NULL;
实际上在C语言中,NULL通常被定义为如下:
#define NULL ((void *)0)
也就是说NULL实际上是一个void *的指针,然后吧void *指针赋值给int *和foo_t *的指针的时候,隐式转换成相应的类型。而如果换做一个C++编译器来编译的话是要出错的,因为C++是强类型的,void *是不能隐式转换成其他指针类型的,所以通常情况下,编译器提供的头文件会这样定义NULL:
#ifdef __cplusplus ---简称:cpp c++ 文件
#define NULL 0
#else
#define NULL ((void *)0)
#endif
证明int *p=NULL
例1:int*p = NULL;
// int *p = 0;
if (p)
{
cout << "不是NULL"<<endl;
}
else
{
cout << "是NULL" << endl;
}
return 0;
}
打印结果: