为什么函数返回数组的时候需要将数组定义成全局变量,可以定义成局部变量吗?

为什么函数返回数组的时候需要将数组定义成全局变量,可以定义成局部变量吗?

int v[10] = { 1,2,3,44,55,66,77,8,9,1 };
auto fun()->int(*)[10]
{
    //int v[10] = { 1,2,3,44,55,66,77,8,9,1 };
    return &v;
}
int main()
{
    auto t = fun();
    for (int i = 0; i <= 10; i++)
        cout << (*t)[i] << endl;
}

不可以,因为局部变量堆栈会销毁。
但是可以传那些有深拷贝构造函数的对象或者new出来的指针