標籤: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++ —— 返回數組指標的函數