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