您的位置:首页 > 编程语言 > C语言/C++

c++中返回数组的函数

2014-04-22 21:00 393 查看
在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;
}


使用返回数组的函数一定尧注意释放内存和防止悬挂指针
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息