码迷,mamicode.com
首页 > 编程语言 > 详细

C++ —— 返回数组指针的函数

时间:2017-02-05 11:10:11      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:nal   http   tca   sdn   getc   rmi   art   targe   code   

基础知识:数组不能被拷贝,函数不能返回数组,只能返回数组的指针或者引用。

 

定义一个 返回数组指针的函数 的方法,以 一个接收参数为 含有10个整型元素的数组的引用  和 返回一个含有10个整型元素的数组的指针 的函数为例。

法一:(不使用别名)

int (*getCopyArr(int (&arr)[10]))[10]
{
    int (*n)[10] = (int (*)[10])new int[10];
    for (int i = 0; i < 10; i++)
        (*n)[i] = arr[i];
    return n;
}
//note:该函数返回了分配在堆的数组,如果得到该数组后没有释放内存,会导致内存泄漏,这里仅仅作为示例不考虑该问题

法二:

//尾置返回类型 (C++11标准)
auto getCopyArr2(int(&arr)[10])->int(*)[10]
{
    return getArr(arr);
}

法三:

//使用类型别名(1)
typedef int arrT[10];

arrT* getCopyArr3(int(&arr)[10])
{
    return getArr(arr);
}

法四:

//使用类型别名(2)(C++11 标准)
using arrT2 = int[10];

arrT2* getCopyArr4(int(&arr)[10])
{
    return getArr(arr);
}

 

 声明一个  返回数组指针的函数 的 函数指针的方法:

int (*(*getCA)(int(&)[10]))[10];
getCA = getArr;
//类似于 int sum(int a, int b)函数 //的函数指针 int(*fun)(int, int);

 

参考博文  和 《C++ primer 第5版》

---------------------------------------------------------------------------------------

最后来两个“提神醒脑”的例子:

//声明一个指向含有10个元素的数组的指针,其中每个元素是一个函数指针,该函数的返回值是int,参数是int*
int (*(*p)[10])(int *)
//
int (*(*p[10]))(int *)
//来源
//定义一个含4个元素数组的指针,每个元素为 函数的指针,该函数参数为 一个含10个元素的数组的引用 返回值为 含10个元素的数组的指针
int (*(*getCA[4])(int(&)[10]))[10];

 

C++ —— 返回数组指针的函数

标签:nal   http   tca   sdn   getc   rmi   art   targe   code   

原文地址:http://www.cnblogs.com/BensonLaur/p/6367077.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!