从函数返回数组
如何阵列可以从一个函数在C返回++请完成一个简单的例子太多,如果可能的答案。 thankx提前。
返回一个指针数组的开始,如:
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);
如果用'shared_array'替换'int *',然后用'new []'替换'malloc',并删除'free',然后是的。 – 2011-05-08 11:20:33
为什么**不**使用指针的完美例子。这并不表示该函数正在返回动态分配块的所有权。因此,调用者如何知道返回的指针应该被解除分配。如果通过某种魔法,你知道它需要被分配,那么调用者如何知道如何执行该任务free(),delete,delete []? – 2011-05-08 11:25:59
在C++代码中,你几乎不应该传递RAW指针。在组件的内部有一些余地,但不应该通过外部接口传递给属于另一个开发人员的代码。这是因为没有所有权的概念。不知道谁拥有指针,不知道谁应该释放指针。 – 2011-05-08 11:29:03
您可能要等待一个答案[另一你的问题](http://*.com/questions/5927023/how-to-return-an-array-to-a-function),而不是问两个非常相似的对方。 – Bart 2011-05-08 11:07:13
最简单的方法是使用std :: vector而不是数组。 :-) – 2011-05-08 11:12:49