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

今天在写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;

发布了33 篇原创文章 · 获赞 9 · 访问量 3万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览