2011-04-07 54 views
0

我有一個數組聲明獲得通過功能PARAM數組

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) 

EDIT 2

static Object array[N] 
+0

你想做什麼?將數組的值複製到另一個數組或將這兩個數組指向相同的數據? – jfs 2011-04-07 17:34:08

+0

指向兩個數組相同的數據 – Stefano 2011-04-07 17:37:50

回答

2

雖然我不是100%確信我正確地理解你的意圖, 如果GetArray必須返回Object array[N]本身,有關返回從GetArray Object*怎麼樣?
例如:

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 
    } 
} 
+0

@ise我編輯我的問題與實際的代碼,它編譯好,但是當我編譯我有一個關於單位變量的警告和程序停止工作與運行時錯誤 – Stefano 2011-04-08 05:47:27

+0

@ Stefano:請參閱已編輯的答案。 – 2011-04-08 08:33:45

+0

@ise它在運行時給我一個錯誤:arr是單位化的。我用一個可能很重要的東西來編輯我的問題 – Stefano 2011-04-08 14:32:32

0

正如號碼,你應該通過數組的地址:

GetArray(&array, &number) 

但隨着C++,你的生活更美好唱參考參數。

+0

好吧,但我不明白我應該如何聲明數組變量傳遞給函數。你能解釋我嗎? – Stefano 2011-04-07 17:23:55

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 "&" 
+0

好吧,但我有一個問題:計數是數組的大小調用GetArray函數後,我需要循環數組。現在,數組應該如何聲明? – Stefano 2011-04-07 17:48:40

+0

你的週期是什麼意思? (int i = 0; i <(int)number; i ++) – jfs 2011-04-07 17:55:22

+0

我的意思是使用此代碼來循環數組: – Stefano 2011-04-07 17:56:42