课程
/后端开发
/C++
/C++远征之离港篇
为什么确认内存是否申请成功的if语句是“if(NULL == p)”,而不是“if(p == NULL)”?感觉逻辑上说不过去呢
2016-12-11
源自:C++远征之离港篇 5-1
正在回答
其实最好是用if(nullptr==p)来判断;
在c语言中NULL是宏定义#define NULL ((void*)0);
但是因为c++是强类型语言,void *是不能隐式转换成其他指针类型的;
这时候C++ 11的nullptr可以很好的解决这个问题
if(NULL == p)和f(p == NULL)两者并没什么区别,都是判断指针p是否为空。但是当考虑到出错检查时,if(NULL == p)写法更好,因为如果误写为if(NULL = p)的时候,编译器就会提示出错(因为常量不能被赋值);而if(p == NULL)如果误写为if(p = NULL),则编译器不会报错。
举报
C++扫清通往面向对象的最后一道障碍,将所有知识点融会贯通