0

我有一个声明为的数组

Object array[N];

和一个函数

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

我正在尝试使用以下代码调用该函数:

size_t number;
GetArray(XXX, &number);

我应该通过什么来获取数组?谢谢

编辑 1

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

编辑 2

static Object array[N]
4

3 回答 3

2

虽然我不是 100% 相信我正确理解了您的意图,但如果GetArray必须自己返回,Object array[N]那么返回如何 ? 例如:Object*GetArray

size_t const N = 1;
Object array[N];

Object* GetArray(size_t* count)
{
    *count = N;
    return array;
}

编辑
据我看到您编辑的问题,参数number似乎GetArray 被视为参考(而不是指针)。那么,对于数组来说,使用引用而不是指针怎么样?然后你可以避免麻烦的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
    }
}
于 2011-04-07T20:58:36.743 回答
0

就像使用数字一样,您应该传递数组的地址:

GetArray(&array, &number)

但是对于 C++,最好使用引用参数。

于 2011-04-07T17:05:13.490 回答
0

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

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 "&"
于 2011-04-07T17:45:42.410 回答