2011-05-08 110 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