gpt4 book ai didi

c - 我收到一个函数警告,但我不知道如何编写该函数,所以我不会再收到该警告

转载 作者:太空宇宙 更新时间:2023-11-04 04:24:31 24 4
gpt4 key购买 nike

因此,这是基于节点的 id 在树中简单搜索节点的代码:

NodeT *searchNode(NodeT *parent, int id)
{
if(parent == NULL) printf("\nThere is no tree.");
if(parent->id == id)
return parent;
else
{
if(parent->left != NULL) searchNode(parent->left, id);
if(parent->right != NULL) searchNode(parent->right, id);
}
}

我也得到这个:警告:控制到达非空函数的末尾[-Wreturn-type]|

节点定义如下:

typedef struct node_type
{
char id;
struct node_type *left, *right;
} NodeT;

有什么方法可以消除该警告吗?

最佳答案

您的函数仅在某些情况下返回某些内容。该警告告诉您在任何情况下都需要返回。对于您的代码 cos,这是一个非常重要的警告,因为它还突出显示了几个错误。

if(parent == NULL) printf("\nThere is no tree.");
if(parent->id == id)

如果 parentNULL 会怎样?它打印出错误消息,然后继续到下一行并崩溃。您希望第一个 if 也有一个 return 语句,如果它是真的,这样代码就不会继续或将其余的函数代码放入 else block 中。

接下来,如果您的树中有多个节点会怎样?你遍历了这棵树,却忽略了结果!如果您搜索一个不存在的节点,您也不会为此返回任何内容。

因此,您应该将代码更改为return NULL,如果它找不到结果或返回通过递归调用自身传回给它的结果。

关于c - 我收到一个函数警告,但我不知道如何编写该函数,所以我不会再收到该警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43046094/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com