参考 http://blog.sina.com.cn/s/blog_6f26189101012111.html
// 在C++中,数组不是一种类型,因此不能被直接返回。一般有两种方法来返回一个数组。
// 1,返回一个指向数组的指针
/*
Main Definition
Created by taotao man on 2016-9-10
brief: C++中如何使函数返回数组
// Modify records
add SetA();
Change GetA();
*/
#include<iostream>
using namespace std;
// 在C++中,数组不是一种类型,因此不能被直接返回。一般有两种方法来返回一个数组。
// 1,返回一个指向数组的指针
int *Array()
{
int *arr;
arr = new int[10];
for(int i = 0; i < 10; i++)
{
arr[i] = i + 1;
cout<<arr[i]<<" ";
}
cout<<endl;
return arr;
}
int main()
{
int *b;
b = Array();
for(int i = 0; i < 10; i++)
{
cout<<b[i]<<" ";
}
cout<<endl;
//
system("pause");
return 0;
}
2. 返回一个结构的形式。
这种形式相对较安全,可以避免忘记释放指针而造成内存泄露,也可以避免访问悬挂指针造成的错误。但缺点是由于结构是先拷贝再返回,因此如果结构较大时,会影响效率和占用较大内存。
/*
Main Definition
Created by taotao man on 2016-9-10
brief: C++中如何使函数返回数组
// Modify records
add SetA();
Change GetA();
*/
#include<iostream>
using namespace std;
//返回一个结构的形式。这种形式相对较安全,可以避免忘记释放指针而造成内存泄露,
// 也可以避免访问悬挂指针造成的错误。
// 但缺点是由于结构是先拷贝再返回,因此如果结构较大时,会影响效率和占用较大内存。
class Tag
{
public:
int a[10];
}X;
class Tag Array()
{
for(int i = 0; i < 10; i++)
{
X.a[i] = i + 1;
cout<<X.a[i]<<" ";
}
cout<<endl;
return X;
}
int main()
{
class Tag Y = Array();
for(int i = 0; i < 10; i++)
{
cout<<Y.a[i]<<" ";
}
cout<<endl;
//
system("pause");
return 0;
}