为了账号安全,请及时绑定邮箱和手机立即绑定

内存申请不成功时

if(NULL==P)

NULL==P与P==NULL有什么区别

正在回答

1 回答

int *p = NULL; 
定义一个指针变量p,其指向的内存里面保存的是int 类型的数据;在定义变量p 的同时把p 的值设置为0×00000000,而不是把*p 的值设置为0×00000000。这个过程叫做初始化,是在编译的时候进行的。 
int *p; 
*p = NULL; 
第一行代码,定义了一个指针变量p,其指向的内存里面保存的是int 类型的数据;但是这时候变量p 本身的值是多少不得而知,也就是说现在变量p 保存的有可能是一个非法的地址。第二行代码,给*p 赋值为NULL,即给p指向的内存赋值为NULL;但是由于p 指向的内存可能是非法的,所以调试的时候编译器可能会报告一个内存访问错误。这样的话,我们可以把上面的代码改写改写,使p 指向一块合法的内存: 
int i = 10; 
int *p = &i; 
*p = NULL; 
在编译器上调试一下,我们发现p 指向的内存由原来的10 变为0 了;而p 本身的值, 即内存地址并没有改变。 

0 回复 有任何疑惑可以回复我~
#1

StevenW 提问者

非常感谢!
2016-05-17 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C++远征之离港篇
  • 参与学习       122700    人
  • 解答问题       474    个

C++扫清通往面向对象的最后一道障碍,将所有知识点融会贯通

进入课程

内存申请不成功时

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信