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;
}
或
或
或
或