#include <iostream>
using namespace std;
int main() {
cout << NULL << endl; //0
cout << nullptr << endl;//nullptr
return 0;
}
#include <iostream>
using namespace std;
void func(int x) {
cout << x << endl;
return ;
}
void func(int *x) {
cout << __PRETTY_FUNCTION__ << endl;
cout << x << endl;
return ;
}
int main() {
cout << NULL << endl; //0
cout << nullptr << endl;//nullptr
if (NULL) {
cout << "true" << endl;
} else {
cout << "false" << endl; //输出
}
if (nullptr) {
cout << "true" << endl;
} else {
cout << "false" << endl; //输出
}
func(nullptr); //编译正确,正常执行
//func(NULL); //编译报错
return 0;
}
运行结果:
0
nullptr
false
false
void func(int *)
0x0
但是如果调用 func(NULL)
,编译就会报错。因为 NULL
本质上是个整数0,也能表示空地址,所以不知道到底调用的是哪个函数;而 nullptr
是更加明确的空地址的语义信息,即只能表示地址。