在C++中,是不可以直接返回一个数组的,一般返回数组的指针。
有如下几种方法:
1.直接声明
int (*f1())[10]
{
int (*p)[10];//声明数组的指针变量
p = (int (*)[10])calloc(10,sizeof(int));//为数组申请空间
for(int i = 0;i<10;i++)
(*p)[i] = i+21;
return p;
}
2.采用typedef和using 声明类型:
typydef int (*arr)[10];
或者 using arr = int(*)[10];//c++11
arr f2()
{
int (*p)[10];
p = (int (*)[10])calloc(10,sizeof(int));
for(int i = 0;i<10;i++)
(*p)[i] = i+21;
return p;
}
3.采用尾随的返回类型 trailing-return-type //c++11
auto f3()->int(*)[10]
{
int (*p)[10];
p = (int (*)[10])calloc(10,sizeof(int));
for(int i = 0;i<10;i++)
(*p)[i] = i+21;
return p;
}
4.使用decltype关键字//C++11
int (* m)[10];
decltype(m) f4(){
int (*p)[10];
p = (int (*)[10])calloc(10,sizeof(int));
for(int i = 0;i<10;i++)
(*p)[i] = i+21;
return p;
}
使用返回数组的函数一定尧注意释放内存和防止悬挂指针