c/c++下指针判空失效问题 讨论

6 篇文章 0 订阅
4 篇文章 0 订阅

今天在写c的时候,好久不写,容易遇到指针问题!!!(这是我刚开始写的内心独白)

可是。。。真的遇到了!!!

刚开始以为是我写的判空错误,我刚开始是这样写的:p->next==NULL 

然后一直以为是我其他地方逻辑的问题,调试发现一直pop栈的时候会有问题,就是老是栈为空了还在pop。

好不容易查到博客说要用if(p->next)或着if(!p->next),可是我不知道为什么呀!!!

后来查了好久,知道了是因为不同平台对空NULL处理的问题,有些会将NULL定义为一个地址,等你下次判断的时候就发现根本查不到为空!!!!太坑了

所以我们就要使用if(p->next)或着if(!p->next)这样来判空,就没问题了!


补充:

我后来发现在vs2017上建立的空项目,以上的方法不管用,后来还是改成了一个结构体,用单独的一个变量来标示是否为空。

typedef struct SHNode {
int x;
int y;
int length;
struct SeedNode *next;
}SHNode;

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值