C 从函数获取结构

C 从函数获取结构,c,struct,C,Struct,我希望从函数返回一个包含多维数据的结构。其思想是:在函数中收集结构信息,然后将虚拟结构分配给结构补丁,然后在另一个函数中使用补丁信息并在其上循环 这就是我所拥有的。我怎样才能正确地做到这一点 struct patchdata { char* version; char* size; char* compatible; }; int ourfunction(struct patchdata* patches) { size_t count = 12; s

我希望从函数返回一个包含多维数据的结构。其思想是:在函数中收集结构信息,然后将虚拟结构分配给结构
补丁
,然后在另一个函数中使用
补丁
信息并在其上循环

这就是我所拥有的。我怎样才能正确地做到这一点

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

更简单的方法是明确地分配结构字段:

#包括
结构修补数据{
字符*版本;
字符*大小;
字符*兼容;
};
intourfunction(结构补丁数据*补丁){
如果(补丁){
//假设面片指向至少3个结构的阵列
修补程序[0]。version=“version 1.0”;
修补程序[0]。大小=空;
修补程序[0]。兼容=NULL;
修补程序[1]。version=“version 2.0”;
补丁[1]。大小=NULL;
修补程序[1]。compatible=NULL;
修补程序[2]。version=“version 3.0”;
补丁[2]。大小=NULL;
修补程序[2]。compatible=NULL;
返回0;
}否则{
返回-1;
}
}
int main(){
结构patchdata patchstruct[3];
函数(patchstruct);
printf(“测试:%s\n”,patchstruct[0]。版本);
返回0;
}

一种更简单的方法是明确地分配结构字段:

#包括
结构修补数据{
字符*版本;
字符*大小;
字符*兼容;
};
intourfunction(结构补丁数据*补丁){
如果(补丁){
//假设面片指向至少3个结构的阵列
修补程序[0]。version=“version 1.0”;
修补程序[0]。大小=空;
修补程序[0]。兼容=NULL;
修补程序[1]。version=“version 2.0”;
补丁[1]。大小=NULL;
修补程序[1]。compatible=NULL;
修补程序[2]。version=“version 3.0”;
补丁[2]。大小=NULL;
修补程序[2]。compatible=NULL;
返回0;
}否则{
返回-1;
}
}
int main(){
结构patchdata patchstruct[3];
函数(patchstruct);
printf(“测试:%s\n”,patchstruct[0]。版本);
返回0;
}

sizeof(*patches)returns你期望得到什么?你期望得到什么
sizeof(*patches)
returns?是否可以将
patchstruct
保持为一个没有大小的全局数组?@AppelFlap:不,数组在C中有一个固定的大小。或者在
main
中定义
patchstruct
local,使用一个可能的参数大小,或使用编译时常量大小的全局数组,或根据需要定义指针并分配和重新分配结构数组。是否可以将
patchstruct
保持为不带大小的全局数组?@AppelFlap:否,数组的大小在C中是固定的。或者在
main
中定义
patchstruct
局部数组,并使用可能的参数大小,或具有编译时常量大小的全局,或定义指针并根据需要分配和重新分配结构数组。