c++ 如何讓函數返回數組

 

1,不要return數組的指針(即數組名),這樣是錯的

函數體內部創建的變量都是局部變量,當函數運行結束的時候,都會拋棄,也就是說你只返回了一個temp指針,這個指針確實是你想要的,這沒有問題,但是它指向的內容在函數結束也就是return的那一刻之後就已經物是人非了。所以你用這個這個指針去訪問的內容也不是你想要的內容了。

 

2解決方法:動態內存分配,就是new和delete的配合使用。在函數裏用new關鍵字創建一個數組,這樣這塊地址對應的內容就屬於你管理了,再也不會在函數結束的時候被回收了,你也就可以通過返回的指針來訪問數組了,最後再delete一下。

 

千萬不要返回一個局部變量的指針或引用,因爲你返回也是沒用的,得到的指針所指內容在函數結束後就已經變了。

int *fun2() { int *temp = new int[arrlen];//區別就是這裏多個new for (int i = 0; i < arrlen; i++) { temp[i] = i; } return temp; }

在調用後的地方delete

 

發佈了50 篇原創文章 · 獲贊 32 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章