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;

猜你喜欢

转载自blog.csdn.net/qq_34131399/article/details/80231767