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;
}
结果:
讨论:
可以简单的理解是,函数fun1中使用“int arr[10]”,fun1调用玩毕,arr销毁;而函数fun2中使用“int *arr=new int[10]”,fun2调用玩毕,arr创建的数组依然存在在内存中。
另外注意:
使用用类似“int *arr=new int[10]”的创建数组,用完一定要手动销毁,即“delete arr”。
否则会出现一些happy的事情。