在C++里,数组不是一种类型,所以不能被直接返回。
const int N = 10;
void main (){
int *b;
int* getArr(int);
b = getArr(N);
for (int i = 0; i < N; i++) {
std::cout << b[i] << " ";
}
getchar();
}
int* getArr(int num){
int *a;
a = new int[num];
for (int i = 0; i < N; i++) {
a[i] = i
}
return a;
}
上面代码,getArr() 返回一个指向数组的指针。
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;
}
void main()
{
class tag Y = Array();
for (int i = 0; i<10; i++)
{
cout << Y.a[i] << " ";
}
cout << endl;
getchar();
}
上面代码,返回一个结构的形式。这种形式相对较安全,可以避免忘记释放指针而造成内存泄露,也可以避免访问悬挂指针造成的错误。但缺点是由于结构是先拷贝再返回,因此如果结构较大时,会影响效率和占用较大内存。