首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从函数中获取结构

从函数中获取结构
EN

Stack Overflow用户
提问于 2020-06-06 13:56:57
回答 1查看 28关注 0票数 1

我希望从函数中返回带有多维数据的结构。其思想是:收集函数中的结构信息,然后将虚拟结构分配给结构patches,然后在不同的函数中使用patches信息并对其进行循环。

这就是我所拥有的。我怎么才能做好这件事?

代码语言:javascript
复制
struct patchdata {
    char* version;
    char* size;
    char* compatible;
};

int ourfunction(struct patchdata* patches) {
    size_t count = 12;

    struct patchdata tmp[count];

    tmp[0] = "Version 1.0";
    tmp[1] = "Version 2.0";
    tmp[2] = "Version 3.0";

    if (patches) {
        memcpy(patches, &tmp, sizeof(*patches));
    }
}

struct patchdata patchstruct;

int main()
{
    ourfunction(&patchstruct);

    printf("Test: %s\n", patchstruct[0].version);

    return 0;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-06 14:06:39

一种更简单的方法是将struct字段定义为:

代码语言:javascript
复制
#include <stdio.h>

struct patchdata {
    char *version;
    char *size;
    char *compatible;
};

int ourfunction(struct patchdata *patches) {
    if (patches) {
        // assuming patches points to an array of at least 3 structures

        patches[0].version = "Version 1.0";
        patches[0].size = NULL;
        patches[0].compatible = NULL;

        patches[1].version = "Version 2.0";
        patches[1].size = NULL;
        patches[1].compatible = NULL;

        patches[2].version = "Version 3.0";
        patches[2].size = NULL;
        patches[2].compatible = NULL;
        return 0;
    } else {
        return -1;
    }
}

int main() {
    struct patchdata patchstruct[3];

    ourfunction(patchstruct);

    printf("Test: %s\n", patchstruct[0].version);

    return 0;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62232733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档