欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

NULL、nullptr、0

程序员文章站 2022-07-13 23:34:14
...

通常定义一个指针,为了避免变成野指针,通常会给指针赋空值
NULL是一个宏定义# define NULL 0,所有C++中使用0作为NULL的值,NULL==0。

int *p=0;
int *p=NULL;
int *p=nullptr;

但有时候NULL和0在重载的时候会产生歧义

#include <iostream>
using namespace std;
void fun(int){cout<<"调用了int"<<endl;}
void fun(char*){cout<<"调用了char*"<<endl;}
int main(){
	fun(NULL);//NULL为指针空值
	fun(nullptr)
}

运行结果
调用了int
调用了char*
请按任意键继续. . .

NULL和nullptr都表示空指针
fun(NULL)原本想调用fun(char*)这个重载,但由于在C++中 NULL==0,所以fun(NULL)==fun(0),调用第一个函数,这时要想正确调用重载函数,用nullptr代替NULL,就不会出错。

相关标签: C++ 指针 c++