如何将malloc返回的结构类型转换为结构类型?
如何将malloc返回的类型转换地址转换为结构节点类型?如何将malloc返回的结构类型转换为结构类型?,c,C,如何将malloc返回的类型转换地址转换为结构节点类型? 当我试图编译下面的代码时,每次关于类型的更改都会显示错误 struct node { int info; struct node *link; }; struct node createnode() { struct node *n; n = (struct node *) malloc( sizeof(struct node) ); // error: incompatible types whe
当我试图编译下面的代码时,每次关于类型的更改都会显示错误
struct node {
int info;
struct node *link;
};
struct node createnode() {
struct node *n;
n = (struct node *) malloc( sizeof(struct node) );
// error: incompatible types when returning type 'struct node *' but 'struct node' was expected
return n;
}
您的
createnode
函数返回struct节点
,但您返回一个struct节点*
您应该更改方法签名,使其返回一个结构节点*
此
struct node createnode()
{ ...
表示函数返回一个struct节点
,而不返回一个struct节点*
struct node createnode()
{
struct node *n;
n=(struct node *)malloc(sizeof(struct node));
return(n);
}
请注意,n
是一个struct节点*
——指向struct节点的指针
您在函数定义中省略了*
:
struct node *createnode()
{
struct node *n;
n=malloc(sizeof(struct node));
return(n);
}
请注意,在C中,您不必强制转换void
指针。事实上,如果您这样做,您可以隐藏潜在的问题。您将函数声明为返回一个节点,但正在尝试返回一个节点*。您可能需要更改函数声明struct node*createnode()…
将struct node createnode()
更改为struct node*createnode()
您正试图返回一个指向节点的指针
,当您希望返回一个节点
时,实际上错误在return语句中。函数的返回类型是struct node
,而它应该是struct node*
。看起来像是输入错误。@r3musn0x我实际上怀疑错误在函数的定义中,因为使用了malloc()
@AndrewHenle,我的意思是编译错误在return语句中,而不是OP注释的行中。实际错误当然在返回类型中。谢谢您的帮助