通过function-param获取一个数组

时间:2011-04-07 17:03:37

标签: c++ arrays void-pointers

我有一个声明为

的数组
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]

3 个答案:

答案 0 :(得分:2)

虽然我并不是100%确信我理解你的意图, 如果GetArray必须自己返回Object array[N],那么返回怎么样 来自Object*的{​​{1}}? 例如:

GetArray

修改
至于我看到您编辑的问题,size_t const N = 1; Object array[N]; Object* GetArray(size_t* count) { *count = N; return array; } 的参数number 似乎被视为参考(而不是指针)。 那么,对于数组来说,如何使用引用而不是指针? 然后你可以避免麻烦GetArray的东西 例如:

void**

答案 1 :(得分:0)

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

GetArray(&array, &number)

但是使用C ++,你最好使用参考参数。

答案 2 :(得分: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 "&"