Sto*_*012 1 c++ arrays return-value
我需要我的函数来返回一个数组,但它不会像大多数搜索示例所示的那样将数组作为参数.
代码是这样的:
double myfunction ()
{
double arr[10];
//assign values to the array
return arr;
}
main()
{
double arr2[10];
arr2[10] = myfunction;
//print arr2
}
Run Code Online (Sandbox Code Playgroud)
当我使用指针显示数组时,我得到了像"CCCCCC"这样的值......
你不能这样做...数组是内存块,因此无法"返回"...你可以通过函数调用将指针传递给数组,但你不能安全地返回指向的指针数组内存块,除非声明那些数组static.否则,您将获得未定义的结果,因为当函数返回时,将回收数组占用的堆栈上的内存,并且返回到堆栈内存位置的指针将无效.使用返回的指针很可能会破坏堆栈,或者使程序崩溃.
在C你必须为了避免这一问题,明确使用一个指向堆分配的数组,但与C++使用的最好的事情是std::vector和std::array一个固定大小的数组.例如,std::vector仍然使用堆内存来存储数组(而不是堆栈),但是通过RAII,堆内存可以由对象的生命周期安全地管理.因此,与C不同,您不必担心内存泄漏无法释放指向堆内存的函数返回的指针指向的内存.