C++ 从函数返回数组
可能重复:C++ 从函数返回数组,c++,C++,可能重复: 如何从C++中返回一个函数?请用一个简单的例子来完成你的答案,如果可能的话,谢谢。提前。 返回一个指向数组开始的指针,比如: int* getArray(int numElements) { int* theArray = malloc(sizeof(int) * numElements); return theArray; } …您可以像这样使用它: int* myArray = getArray(3); myArray[0] = 1; myArray[1] = 2
如何从C++中返回一个函数?请用一个简单的例子来完成你的答案,如果可能的话,谢谢。提前。
返回一个指向数组开始的指针,比如: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);
您可能希望等待对的答复,而不是紧接着问两个非常相似的问题。最简单的方法是使用std::vector而不是数组。:-)如果将
int*
替换为shared_array
,然后将malloc
替换为new[]
,并删除free
,则是。这是为什么不使用指针的完美示例。没有迹象表明函数正在返回动态分配块的所有权。因此,调用方如何知道应该取消分配返回的指针。如果你知道它需要被分配,那么调用方如何知道如何执行这个任务?(),删除,删除[]?在C++代码中,你应该很少绕过原始指针。组件内部有一定的回旋余地,但它不应该通过外部接口传递给属于另一个开发人员的代码。这是因为没有所有权的概念。如果不知道谁拥有指针,就无法理解谁应该释放指针。