在阅读了网站上发布的同一问题的一些答案之后,我发现在编写此检查时我显然没有犯错。从来没有,我一直收到警告,所以我决定提出一个问题来解决这个问题。
这是我的代码,我稍后会解释这个问题。
typedef struct node{
char data;
struct node *next;
} node;
// ...
if(head->data == '\0' || head->data == NULL)
return NULL;
假设头指向模拟char *的链表的开头。这个if语句的目的是检查头是否为NULL或者第一个字符是否为endline,我的代码中其他地方的print语句是“(空字符串)。”
在构建程序时,我收到有关我的代码的警告。它说:
警告:指针和整数之间的比较
我在测试字符串变为NULL的情况下遇到困难(由于我对Windows命令行缺乏经验)所以在我尝试解决这个问题之前知道如何解决这些警告会很好。有什么建议吗?
答案 0 :(得分:3)
head->data
不等于NULL
,它不是指针。如果您正在使用C字符串,那么检查\0
字符就足够了。没有更多的东西了。
答案 1 :(得分:1)
你说&#34;假设头指向模拟<script>
$('.btn').on('click', function (e) {
e.stopPropagation();
});
</script>
的链表的开头。此char*
语句的目的是检查头部是否为NULL或第一个字符是否为endline。&#34;
if
但是你没有检查if(head->data == '\0' || head->data == NULL)
return NULL;
,就像你的目标一样,你要检查第一个列表元素的数据值两次。你检查它是否有两种冲突类型 - 它可以同时是一个char(head
)和一个char指针('\0'
)。
您应该检查第一个节点指针是否是 list 终止符,以及第一个NULL
是 string 终结符。
所以我会将你的测试修改为
char