我的代码中有一个指向结构的指针。我想在API中返回这样的指针数组。像
这样的东西Status GetData(MyStructure*** data, int*lengthOfArray)
{
*data = malloc(sizeof(MyStructure*)* arbitaryNumber));
for(i=0....)
{
(*data)[i] = pointerToMyStructure;
}
}
有替代方案吗?我的API必须具有返回类型状态。因此,我目前看到的唯一方法是变成3 star programmer
答案 0 :(得分:8)
由于你也返回了数组的长度,并且因为struct
指针的数组和长度是相关的,你可以构建一个特殊的struct
来同时从你的API获取这两个项目,像这样:
typedef struct {
MyStructure **data;
int length;
} GetDataArg_t;
现在您可以像这样更改您的API:
Status GetData(GetDataArg_t *args) {
args->length = arbitaryNumbdr;
args->data = malloc(sizeof(MyStructure*)* arbitaryNumbdr));
for(i=0....) {
args->data[i] = pointerToMytructure;
}
}
您的API调用如下所示:
GetDataArg_t args;
if (GetData(&args) == STATUS_SUCCESS) {
...
}