NULL
c 语言中将NULL用作空指针,定义:
#define NULL ((void *)0)
c++ 语言中将NULL 定义为 0。C++中不能将void类型的指针隐式转换成其他指针类型,所以将NULL定义为(void)0的话并不能起到空指针的作用。所以引入0来表示空指针,可以对各种类型的指针进行赋值。
#define NULL 0
nullptr
c ++语言中nullptr的关键字可以用作空指针,既然已经有了定义为0的NULL,为何还要nullptr呢?这是因为定义为0的NULL很容易引起混淆,尤其是函数重载调用时,比如:
//函数重载调用
void put(char* a) {
cout<< "char" <<endl;
}
void hello(int a) {
cout<< "char" <<endl;
}
int main() {
put(NULL); //调用put(int a)函数
return 0;
}
如果在C++中还是用NULL来用作空指针的话,我们会以为put(NULL)调用的是put(char* a),但实际上,因为NULL定义为0,所以调用的是put(int a)。所以为了避免这种混淆,C++定义了nullptr关键字用作空指针。
注意
nullptr和NULL以及0在作为条件判断时值都为false,它们两两之间进行等于(==)判断时值为true。
转载:https://blog.csdn.net/u012707739/article/details/77915483