Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从函数返回数组_C++ - Fatal编程技术网

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++代码中,你应该很少绕过原始指针。组件内部有一定的回旋余地,但它不应该通过外部接口传递给属于另一个开发人员的代码。这是因为没有所有权的概念。如果不知道谁拥有指针,就无法理解谁应该释放指针。