空指针:
与C对比:
#define NULL(void *) 0
C中的空指针为NULL C++中的空指针则定义为宏
#define NULL 0
当在C++中需要定义我们的指针为空时,不要使用NULL,使用nullptr,否则容易出现二义性
void func(char * p){}
void func(int x) {}
int main()
{
func(NULL);//此时在C++中认为调用的是func(int x) 因为在C++中认为NULL是0
}
此时应该使用 关键字 func(nullptr);//调用 func(char *p) nullptr是指针为空的常量值
注意:
1.nullptr是C11新引入的关键字,是一个所谓“指针空值类型”的常量,在C++程序中直接使用
2.在C11中,sizeof(nullptr)与sizeof((void *)0) 所占的字节数相同都(4或8)。
3.为了提高代码的健壮性,在后续表示指针建空值时,建议最好使用nullptr。
根据以上当比较指针是否为空时,可以这样写:
int *p=nullptr;
if(p==nullptr); //是正确的
typedef
ty