关键字NULL在VS2017中的定义为:
#ifndef NULL
#ifdef __cplusplus
#define NULL 0
#else
#define NULL ((void *)0)
#endif
#endif
在VS2017中,C++中的NULL等同于数字0,C中的NULL被定义为空指针。
在C++中,由于函数重载原因,仅仅把NULL定义为0,而空指针使用关键字nullptr代替。
例:
void pfun(int a) {
std::cout << "int"<<endl;
}
void pfun(int *a) {
std::cout << "ptr" << endl;
}
int main() {
pfun(0);
pfun(NULL);
pfun(nullptr);
}
运行输出:
int
int
ptr
由运行结果可知,在C++中NULL与0等价,不在为空指针,关键字nullptr表示空指针。