通过function-param获取数组

Get an array via function-param

本文关键字:数组 获取 function-param 通过      更新时间:2023-10-16

我有一个数组声明为

Object array[N];

和函数

void GetArray(void** array, size_t count)
{
    *array = array;
    *count = N;
}

我试图用下面的代码调用函数:

size_t number;
GetArray(XXX, &number);

XXX在哪里我应该传递什么来获得数组?谢谢你

编辑1

Object *array
GetArray((void**)array, number)

编辑2

static Object array[N]

虽然我不能百分之百确信我理解了你的意图,如果GetArray必须返回Object array[N]本身,那么返回Object* from GetArray
例如:

size_t const N = 1;
Object array[N];
Object* GetArray(size_t* count)
{
    *count = N;
    return array;
}

编辑:
就我所看到的你编辑过的问题而言,GetArray的论点number似乎被视为一个参考(不是指针)。那么,对于数组来说,如何使用引用而不是指针呢?然后你可以避免麻烦的void**的东西。
例如:

void GetArray(Object*& arr, size_t& count)
{
    arr = array;
    count = N;
}
int main() {
    size_t number;
    Object *arr;
    GetArray(arr, number);
    for ( size_t i = 0; i < number; ++ i ) {
        Object o = arr[i]; // example
    }
}

就像number一样,你应该传递数组的地址:

GetArray(&array, &number)

但是在c++中,你最好使用引用形参

数组变量是指向数组第一个元素的指针(它的值是数组第一个元素的地址)。

void GetArray(Object* dest, size_t* count)
{
    dest = source; // source's value is an address; just copy it to dest
    *count = N;
}
...
GetArray(array, &number); // array's value is an address so you don't need "&"