我在C:null char == '\0' == NULL中学到了这一点,并在下面编写了一个循环,以便从C语言的char[]的开头到结尾进行读取。
代码语言:javascript复制// case #1
char buf[32];
while (buf[i] != NULL){
//do something...
} 然而,我的gcc编译器给了我一个警告:指针和整数的比较。有人提到我混淆了两个不同的概念: NULL代表指针,‘0’代表字符。因此,为了消除警告,我应该使用'\0‘,因为我的循环测试了char。
现在,我正在编写一个链接列表,并测试头部指针是否指向某个节点。由于它是结构,所以使用if (h1 == NULL)是合理的,但显然编译器在我使用if (h1 == '\0')时也会编译,即使节点是结构而不是char。有人能提供一些帮助吗?为什么在这种情况下可以同时使用“0”和“NULL”,而在第一种情况下却不能同时使用?
代码语言:javascript复制// case #2
struct ListNode {
int val;
struct ListNode *next;
};