标签: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];
标签:nal http tca sdn getc rmi art targe code
原文地址:http://www.cnblogs.com/BensonLaur/p/6367077.html