怎么做动漫网站,wordpress菜单插件,seo 优化一个月费用,网上推广哪个平台好做1.概述
NULL#xff0c;0#xff0c;nullptr值都是0#xff0c;但是类型不同#xff0c;但是由于C头文件中NULL定义宏混乱#xff0c;可能是int 0#xff0c;也可能是(void*)0;
所以在C11及以后的标准中引入新的空指针nullptr#xff0c;nullptr就是(void*)0#xff…1.概述
NULL0nullptr值都是0但是类型不同但是由于C头文件中NULL定义宏混乱可能是int 0也可能是(void*)0;
所以在C11及以后的标准中引入新的空指针nullptrnullptr就是(void*)0所以在C中空指针统一用nullptr。 2.NULL的详细解释
NULL 实际是一个宏在传统的 C 头文件 (stddef.h) 中可以看到如下代码 #ifndef NULL
#ifdef __cplusplus
#define NULL 0
#else
#define NULL ((void *)0)
#endif
#endif 可以看到NULL可能被定义为字面常量0或者被定义为无类型指针(void*)的常量。不论采取何种定义在 使用空值的指针时都不可避免的会遇到一些麻烦; 利用函数重载证明NULL和0是是整形0nullptr是(void*)0
void f(int) { qDebug() f(int) ;
}
void f(int*) { qDebug() f(int*);
}
int main()
{
f(0); //调用了void f(int)
//f(NULL); //调用了void f(int) //QT6中调用出错
f(nullptr); //调用了void f(int*)
return 0;
} 3.nullptr说明
(1)在使用nullptr 表示指针空值时不需要包含头文件因为 nullptr 是 C11 作为新关键字引入的 。
(2)在 C11 中 sizeof(nullptr) 与 sizeof((void*)0) 所占的字节数相同。如QT 64位编译程序为88QT 32位编译程序为44
(3)为了提高代码的健壮性在C中表示指针空值时建议最好使用 nullptr 。