0

次のように宣言された配列があります

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]
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;
}

編集
あなたの編集された質問を見る限り、引数numberGetArray 参照(ポインタではなく)と見なされているようです。では、配列もポインタではなく参照を取ってはどうでしょうか。そうすれば面倒なことは避けられます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

配列変数は、配列の最初の要素へのポインターです(その値は最初の要素のアドレスです)。

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 に答える
0

number と同様に、配列のアドレスを渡す必要があります。

GetArray(&array, &number)

ただし、C++ では、参照パラメーターを使用する方が適切です。

于 2011-04-07T17:05:13.490 に答える