我想接收一个函数的返回值,该函数的typ是结构。那就是我所拥有的:
这就是我定义结构的方式
typedef struct _content {
int length;
char **lines;
} content_t;
主要调用的函数:
read_content("example.txt");
多数民众赞成在我的函数调用:
content_t *read_content(char *filename)
{
struct _content cont;
return cont; //here I try to return my struct cont
}
甚至可以在类型为struct的函数中返回值吗?我该如何解决我的问题?
感谢您的帮助!
答案 0 :(得分:1)
在
content_t *read_content(char *filename)
{
struct _content cont;
return cont; //here I try to return my struct cont
}
您返回一个struct _content
而预期会返回struct _content *
是的,您可以返回struct _content
而不是指向的指针:
content_t read_content(char *filename)
{
struct _content cont;
return cont; //here I try to return my struct cont
}
但警告,您会获得该结构的副本,但行未重复
答案 1 :(得分:1)
您的函数类型不匹配。它正在返回指向content_t
(即content_t *
)的指针,但是您正在返回content_t
的实例。
您需要更改函数以返回指向content_t
的指针。但是,您无法返回局部变量的地址,即return &cont;
,因为该变量在函数返回时将超出范围,并且指针值在返回时将无效。但是,您可以做的是在函数中动态分配内存并返回指向该内存的指针。
content_t *read_content(char *filename)
{
content_t *cont = malloc(sizeof(*cont));
...
return cont;
}
请不要忘记free
调用函数中的内存。
答案 2 :(得分:0)
content_t *read_content(char *filename)
{
content_t *cont = malloc(sizeof(*cont));
...
return cont;
}
或
content_t *read_content(char *filename, content_t *cont)
{
...
return cont;
}
或
content_t *read_content(char *filename, content_t **cont)
{
*cont = malloc(sizeof(**cont));
...
return *cont;
}