如果我有以下程序:
#include <iostream>
// being lazy and using all std just for example.
using namespace std;
int (*some_func())[10]
{
int arr[10]= {0,1,2,3,4,5,6,7,8,9};
return arr;
}
int main()
{
int arr2[10] = some_func();
for(auto i : arr2)
cout << i << endl;
return 0;
}
这是定义返回数组的函数的正确方法吗?我知道我在这里遗漏了一些重要的东西,我的知识告诉我,当你返回 arr 时,你会得到一个 * 到 arr 的第一个元素,但它也告诉我 arr 是在本地定义的,这意味着当函数完成时 arr 将是未定义的因此,当我从返回中实际将 arr 分配给 arr2 时,我为其分配了未定义的内存,这不是我想要的,但是如果我返回 &arr 是不是本质上是一样的?
任何有关理解上述示例的帮助都会很有用,似乎我在某个地方感到困惑,但我不太确定如何纠正它。
谢谢,
欧登