C++ —— 返回數組指標的函數

來源:互聯網
上載者:User

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.