Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从C函数返回链表结构_C_Pointers_Struct_Linked List_Typedef - Fatal编程技术网

从C函数返回链表结构

从C函数返回链表结构,c,pointers,struct,linked-list,typedef,C,Pointers,Struct,Linked List,Typedef,我创建了以下链表结构: struct node { struct data *data; struct node *next; }; 我的问题是,当我试图创建一个返回此链表结构的函数时,会收到以下错误消息: "Conflicting types for 'function'". 我的函数如下所示: struct list_node *function(location piece){ struct list_node *details; details =

我创建了以下链表结构:

 struct node {
    struct data *data;
    struct node *next;
 };
我的问题是,当我试图创建一个返回此链表结构的函数时,会收到以下错误消息:

"Conflicting types for 'function'".
我的函数如下所示:

struct list_node *function(location piece){
    struct list_node *details;
    details = malloc( sizeof(struct list_node) );
    details->next = NULL;
    details->current = NULL;
    if (global_var == WHITE_M){
            struct list_node *temp;
            temp = malloc( sizeof(struct list_node) );
            data new_data;
            *temp->data = new_data;
            temp->next = malloc( sizeof(struct list_node) );
            temp->next = details;
            details = temp;
        }
 return details;
}
实际上,我在函数中要做的是创建新的链表,然后将新节点连接到它,然后返回链表


我尝试过的每个返回短语,以及我尝试过的evert声明都会导致相同的错误,有人能帮我吗?

在if语句的末尾有一个额外的大括号。返回值不在函数中。

if语句末尾有一个额外的大括号。返回不在函数中。

这只是我在这里复制函数时犯的一个错误,在我的代码中返回状态是正确的,我仍然有相同的问题。
我已经更正了原始消息中的问题。

这只是我在这里复制函数时犯的一个错误,在我的代码中,返回状态是正确的,我仍然有相同的问题。
我已更正了原始消息中的问题。

可能是您试图在声明函数之前使用该函数。例如,假设您有:

int func1()
{
   prinft("%d\n", func2());
}

double func2()
{
    return 1.0;
}
如果您没有为“func2”创建一个函数,那么编译器将假定该函数具有整数返回类型。当然它不是真的,但是因为编译器在调用func2()之前没有看到它,所以它对返回类型做出了错误的假设。在代码中,可以在定义“函数”之前调用它。您可以使用函数原型来解决这一问题,这基本上是一种告诉编译器所需函数类型的方法:

//Function prototypes
int func1();
double func2();

int func1()
{
   prinft("%d\n", func2());
}

double func2()
{
    return 1.0;
}

另外,请参阅:

可能是您试图在声明函数之前使用该函数。例如,假设您有:

int func1()
{
   prinft("%d\n", func2());
}

double func2()
{
    return 1.0;
}
如果您没有为“func2”创建一个函数,那么编译器将假定该函数具有整数返回类型。当然它不是真的,但是因为编译器在调用func2()之前没有看到它,所以它对返回类型做出了错误的假设。在代码中,可以在定义“函数”之前调用它。您可以使用函数原型来解决这一问题,这基本上是一种告诉编译器所需函数类型的方法:

//Function prototypes
int func1();
double func2();

int func1()
{
   prinft("%d\n", func2());
}

double func2()
{
    return 1.0;
}

另外,请参见:

函数的定义是否与声明匹配?显示声明。您的第一个结构名为“node”。函数返回“list\u node*”在使用函数之前,您是否定义/声明了函数?大多数(全部?)编译器会给你一个隐式函数类型,然后抱怨类型不匹配;函数在return语句之前关闭,因此您可能需要验证您发布的源代码。在
malloc
调用中也有一个
struct moves\u list\u节点
,但随后将该指针指定给一个
list\u节点*
这是声明:struct list\u node*函数(位置块),在将函数复制到此处时,我将一些“节点”与“列表节点”混淆了,但现在看来还可以。函数的定义与声明匹配吗?显示声明。您的第一个结构名为“node”。函数返回“list\u node*”在使用函数之前,您是否定义/声明了函数?大多数(全部?)编译器会给你一个隐式函数类型,然后抱怨类型不匹配;函数在return语句之前关闭,因此您可能需要验证您发布的源代码。您在
malloc
调用中也有一个
struct moves\u list\u节点
,但随后将该指针指定给一个
list\u节点*
这是声明:struct list\u node*函数(位置块),在将函数复制到此处时,我将一些“节点”与“list\u节点”混淆,但现在看来还可以。您是指“括号”吗而不是“括号”?谢谢。实际上,我指的是大括号。:-)已编辑。你是说“括号”而不是“括号”?谢谢。实际上,我指的是大括号。:-)编辑。