C 如何返回一个函数的返回值,而这个函数的类型是一个结构?

C 如何返回一个函数的返回值,而这个函数的类型是一个结构?,c,function,structure,C,Function,Structure,我想接收一个函数的返回值,它的类型是一个结构。这就是我得到的: 这就是我定义结构的方式 typedef struct _content { int length; char **lines; } content_t; 在main中调用的函数: read_content("example.txt"); content_t *read_content(char *filename) { struct _content cont; return cont; /

我想接收一个函数的返回值,它的类型是一个结构。这就是我得到的:

这就是我定义结构的方式

typedef struct _content {
    int length;
    char **lines;    
} content_t;
在main中调用的函数:

read_content("example.txt");
content_t *read_content(char *filename)
{
    struct _content cont;

return cont;   //here I try to return my struct cont
}
这是main调用的函数:

read_content("example.txt");
content_t *read_content(char *filename)
{
    struct _content cont;

return cont;   //here I try to return my struct cont
}
甚至可以在类型为结构的函数中返回值吗?我怎样才能解决我的问题

谢谢你的帮助

in

content_t *read_content(char *filename)
{
    struct _content cont;

    return cont;   //here I try to return my struct cont
}
您返回一个
struct\u内容
,而需要一个
struct\u内容*

是的,您可以返回一个
struct\u content
,而不是指向以下内容的指针:

content_t read_content(char *filename)
{
    struct _content cont;

    return cont;   //here I try to return my struct cont
}
但是,警告您会得到一个结构的副本,但在中没有重复的行

您返回一个
struct\u内容
,而需要一个
struct\u内容*

是的,您可以返回一个
struct\u content
,而不是指向以下内容的指针:

content_t read_content(char *filename)
{
    struct _content cont;

    return cont;   //here I try to return my struct cont
}

但是警告您获得了结构的副本,但行没有重复

您的函数中存在类型不匹配。它返回指向
内容的指针(即
内容*
),但您返回的是
内容的实例

您需要更改函数以返回指向
内容的指针。但是,您不能返回局部变量的地址,即
return&cont,因为函数返回时变量将超出范围,返回时指针值将无效。但是,您可以在函数中动态分配内存,并返回指向该内存的指针

content_t *read_content(char *filename)
{
    content_t *cont = malloc(sizeof(*cont));
    ...
    return cont;
}

不要忘记释放调用函数中的内存。

函数中存在类型不匹配。它返回指向
内容的指针(即
内容*
),但您返回的是
内容的实例

content_t *read_content(char *filename)
{
    content_t *cont = malloc(sizeof(*cont));
    ...
    return cont;
}
您需要更改函数以返回指向
内容的指针。但是,您不能返回局部变量的地址,即
return&cont,因为函数返回时变量将超出范围,返回时指针值将无效。但是,您可以在函数中动态分配内存,并返回指向该内存的指针

content_t *read_content(char *filename)
{
    content_t *cont = malloc(sizeof(*cont));
    ...
    return cont;
}
不要忘记
释放调用函数中的内存

content_t *read_content(char *filename)
{
    content_t *cont = malloc(sizeof(*cont));
    ...
    return cont;
}