gpt4 book ai didi

c - 警告 - Expected ‘struct node **’ but argument is of type ‘struct node **’ 是什么意思?

转载 作者:行者123 更新时间:2023-11-30 15:12:08 24 4
gpt4 key购买 nike

我从数组创建树的代码:

#include<stdio.h>
#include<malloc.h>
typedef struct
{
struct node* left;
struct node* right;
int val;
}node;

void create_tree(node** root,int val)
{

if(*root == NULL )
{
*root = (node*)malloc(sizeof(node));
(*root)->val = val;
(*root)->left = NULL;
(*root)->right = NULL;
return;
}
if((*root)->val <= val )
create_tree(&((*root)->left),val);
else
create_tree(&((*root)->right),val);

return ;
}



int main()
{
node *root = (node*)malloc(sizeof(node));
root->val = 10;
root->left = NULL;
root->right = NULL;
int val[] = { 11,16,6,20,19,8,14,4,0,1,15,18,3,13,9,21,5,17,2,7,12};
int i;
for(i=0;i<22;i++)
create_tree(&root,val[i]);
return 0;
}

我收到警告:

tree.c:10:6: note: expected ‘struct node **’ but argument is of type ‘struct node **’
void create_tree(node** root,int val)
^

我无法理解此警告的含义?预期的和实际的都是struct node **类型。这是一个错误吗?

最佳答案

编辑后(这就是我们要求 [mcve] 的原因),问题所在就很清楚了。

在您的结构内,您引用​​一个结构节点。但是您没有定义该类型,您只为本身没有名称的结构定义别名node

请注意,在 C 中,struct node 驻留在与变量或 typedefed 别名等“正常”名称不同的命名空间中。

所以你必须添加一个标签:

typedef struct node {
struct node* left;
struct node* right;
int val;
} node;

这样你就有了一个结构节点以及一个名为node的类型。

关于c - 警告 - Expected ‘struct node **’ but argument is of type ‘struct node **’ 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35245936/

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