在c中,空指针有两种表示方法,一种是常数0,一种是preprocessor macro NULL,NULL可被定义为0或((void*)0)。
在c++中,不能将void*隐式转换为其他类型的指针,为了使代码 char* c = NULL; 能通过编译,c++建议将NULL 定义为 0。
void foo(char *); void foo(int); foo(NULL); //将会调用 foo(int), 这并不是程序员想要的行为,也违反了代码的直观性。
C++11,引入nullptr代表空指针常数,nullptr的类型为nullptr_t,能隐式转换为其他类型的指针,也能和它们进行相等或不等的比较。但是nullptr不能转换为整数,也不能和整数进行比较。