Получить массив через функцию-параметр

У меня есть массив объявлен как

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 ответа

Решение

Хотя я не уверен на 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
    }
}

Как и с числом, вы должны передать адрес массива:

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 "&"
Другие вопросы по тегам