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