我有一个指向代码中结构的指针.我想在API中返回这样的指针数组.就像是
Status GetData(MyStructure*** data, int*lengthOfArray)
{
*data = malloc(sizeof(MyStructure*)* arbitaryNumber));
for(i=0....)
{
(*data)[i] = pointerToMyStructure;
}
}
Run Code Online (Sandbox Code Playgroud)
有替代方案吗?我的API必须具有返回类型状态.所以我现在看到的唯一前进方向就是成为一名三星级程序员
既然你也返回了数组的长度,并且因为struct指针数组和长度是相关的,你可以构建一个特殊的struct来从你的API中获取两个项目,如下所示:
typedef struct {
MyStructure **data;
int length;
} GetDataArg_t;
Run Code Online (Sandbox Code Playgroud)
现在您可以像这样更改API:
Status GetData(GetDataArg_t *args) {
args->length = arbitaryNumbdr;
args->data = malloc(sizeof(MyStructure*)* arbitaryNumbdr));
for(i=0....) {
args->data[i] = pointerToMytructure;
}
}
Run Code Online (Sandbox Code Playgroud)
您的API调用如下所示:
GetDataArg_t args;
if (GetData(&args) == STATUS_SUCCESS) {
...
}
Run Code Online (Sandbox Code Playgroud)