我正在尝试打印一些包含 integer 的整数数据0,但我想忽略包含它的数据NULL而不打印它。但我的 C 代码无法区分0和NULL并将它们视为相同。
void ecrire(struct node *p) {
if (p->data == NULL) { 'if the first node contains NULL it means list is empty'
printf("no items!\n");
return;
}
struct node *temp = p;
while (temp != NULL) {
printf("%d ", temp->data);
temp = temp->next;
}
printf("\n");
}
Run Code Online (Sandbox Code Playgroud)
当我传递第一个节点中包含值 0 的列表时,它会将其视为空列表。请问有什么解决办法吗?
C 标准不提供整数类型来表示除整数之外的任何值。没有 null 或 \xe2\x80\x9cNULL\xe2\x80\x9d 值,这意味着 \xe2\x80\x9c 不是任何整数值。\xe2\x80\x9d
\n该宏旨NULL在与指针一起使用,而不是与整数一起使用。它是一个空指针常量。对于指针,NULL是一个用于指示指针未指向任何事物(某些对象或函数)的值。它不应该与整数一起使用。您可以使用NULLwith 指针p来确定它是否指向一个结构,并且可以使用它来p->next确定是否有另一个节点链接到该结构。
如果结构可能包含也可能不包含数据,那么通常您应该创建结构的另一个成员来指示它是否包含数据(和/或可能包含多少数据或什么类型的数据)。或者,您可以指定一些可以用成员类型表示的整数值data,但您永远不会将其整数值用作结构中不存在数据的指示符。