c++中返回数组函数

c++中返回数组函数

演示代码:

int * fun1()
{
    int arr[10];
    for(int i=0; i<10; i++)
    {
        arr[i]=i;
    }
    return arr;
}

int * fun2()
{
    int *arr=new int[10];
    for(int i=0; i<10; i++)
    {
        arr[i]=i;
    }
    return arr;
}

int main()
{
    int *arr=fun1();
    cout<<"fun1: ";
    for(int i=0; i<10; i++)
    {
        cout<<arr[i]<<" ";
    }
    delete arr;
    cout<<endl;

    arr=fun2();
    cout<<"fun2: ";
    for(int i=0; i<10; i++)
    {
        cout<<arr[i]<<" ";
    }
    delete arr;
    cout<<endl;
    return 0;
}

结果:
c++中返回数组函数
讨论:
可以简单的理解是,函数fun1中使用“int arr[10]”,fun1调用玩毕,arr销毁;而函数fun2中使用“int *arr=new int[10]”,fun2调用玩毕,arr创建的数组依然存在在内存中。

另外注意:

使用用类似“int *arr=new int[10]”的创建数组,用完一定要手动销毁,即“delete arr”。
否则会出现一些happy的事情。