c - 如何返回结构类型的函数的返回值?

标签 c function structure

我想接收类型为结构的函数的返回值。这就是我所拥有的:

这就是我定义结构的方式

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
}

是否有可能在类型为结构的函数中返回一个值?我该如何解决我的问题?

感谢您的帮助!

最佳答案

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

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

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

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

关于c - 如何返回结构类型的函数的返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54407128/

相关文章:

javascript - 在工厂类中实现继承,而无需在 Javascript 中复制代码

c - 在C中扫描文件中的特定行

c - 我如何在不包含 "unistd.h"的情况下使用 read() 和 write() ?

c - 是否可以使用 C 在运行时决定指针的间接级别?

维基百科 "Reconfigurable computing"代码示例可以在像 Haskell 这样的高级编译器中解决吗?

javascript - 编写全局函数以在 Angular 所有组件中使用

c - 如何将 char 指针数组的索引设置为 char 指针?

c++ - 帮助使用扩张函数 OpenCV

Clojure内置: def vs defn的函数定义

c++ - 在类公共(public)方法中创建一个新结构