替代使用三重指针

时间:2014-05-01 19:14:54

标签: c

我的代码中有一个指向结构的指针。我想在API中返回这样的指针数组。像

这样的东西
Status GetData(MyStructure*** data, int*lengthOfArray)
  {
     *data = malloc(sizeof(MyStructure*)* arbitaryNumber));
     for(i=0....)
     {
       (*data)[i] = pointerToMyStructure;
     }
  }   

有替代方案吗?我的API必须具有返回类型状态。因此,我目前看到的唯一方法是变成3 star programmer

1 个答案:

答案 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) {
    ...
}