2011-05-08 258 views
0

可能重複:
howto return a array in a c++ method?從函數返回數組

如何陣列可以從一個函數在C返回++請完成一個簡單的例子太多,如果可能的答案。 thankx提前。

+3

您可能要等待一個答案[另一你的問題](http://stackoverflow.com/questions/5927023/how-to-return-an-array-to-a-function),而不是問兩個非常相似的對方。 – Bart 2011-05-08 11:07:13

+1

最簡單的方法是使用std :: vector而不是數組。 :-) – 2011-05-08 11:12:49

回答

2

返回一個指針數組的開始,如:

int* getArray(int numElements) { 
    int* theArray = malloc(sizeof(int) * numElements); 
    return theArray; 
} 

...你可以使用它像:

int* myArray = getArray(3); 
myArray[0] = 1; 
myArray[1] = 2; 
myArray[2] = 3; 

//do this when you are done with it 
free(myArray); 
+1

如果用'shared_array'替換'int *',然後用'new []'替換'malloc',並刪除'free',然後是的。 – 2011-05-08 11:20:33

+0

爲什麼**不**使用指針的完美例子。這並不表示該函數正在返回動態分配塊的所有權。因此,調用者如何知道返回的指針應該被解除分配。如果通過某種魔法,你知道它需要被分配,那麼調用者如何知道如何執行該任務free(),delete,delete []? – 2011-05-08 11:25:59

+0

在C++代碼中,你幾乎不應該傳遞RAW指針。在組件的內部有一些餘地,但不應該通過外部接口傳遞給屬於另一個開發人員的代碼。這是因爲沒有所有權的概念。不知道誰擁有指針,不知道誰應該釋放指針。 – 2011-05-08 11:29:03