gpt4 book ai didi

C++函数返回数组

转载 作者:行者123 更新时间:2023-11-30 00:38:29 24 4
gpt4 key购买 nike

我需要我的函数返回一个数组,但它并不像大多数搜索示例所示那样将数组作为参数。

代码是这样的:

double  myfunction ()
{
double arr[10];
//assign values to the array
return arr;
}

main()
{
double arr2[10];
arr2[10] = myfunction;
//print arr2
}

当我使用指针显示数组时,我得到了像“CCCCCC”这样的值......

最佳答案

你不能这样做......数组是内存块,因此不能“返回”......你可以通过函数调用传递指向数组的指针,但你不能安全地返回指针指向数组内存块,除非这些数组声明为 static。否则会得到未定义的结果,因为函数返回时数组占用的栈内存将被回收,返回的栈内存位置指针将无效。使用返回的指针很可能会破坏堆栈,或使您的程序崩溃。

在 C 中,您必须显式使用指向堆分配数组的指针以避免此问题,但对于 C++,最好使用 std::vectorstd::array 用于固定大小的数组。例如,std::vector 仍然使用堆内存来存储数组(而不是堆栈),但是通过 RAII,堆内存由对象的生命周期安全地管理。因此,与 C 不同,您不必担心由于无法释放从指向堆内存的函数返回的指针所指向的内存而导致的内存泄漏。

关于C++函数返回数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10808825/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com