如何從 C++ 函式中返回區域性陣列?
區域性陣列不能直接從 C++ 函式中返回,因為它可能在函式呼叫之後就已不存在於記憶體中了。解決這個問題的方法是在函式中使用靜態陣列。由於靜態陣列的生存週期是整個程式,因此可以輕鬆地從 C++ 函式中返回,而不會出現上述問題。
一個展示此方法的程式如下。
示例
#include <iostream> using namespace std; int *retArray() { static int arr[10]; for(int i = 0; i<10; i++) { arr[i] = i+1; } return arr; } int main() { int *ptr = retArray(); cout <<"The array elements are: "; for(int i = 0; i<10; i++) { cout<< ptr[i] <<" "; } return 0; }
輸出
以上程式的輸出如下。
The array elements are: 1 2 3 4 5 6 7 8 9 10
現在讓我們來理解一下以上的程式。
在 retArray() 函式中,定義了一個靜態陣列 arr。然後,使用一個 for 迴圈對這個陣列進行初始化。最後,返回陣列 arr。展示這一過程的程式碼片段如下。
int *retArray() { static int arr[10]; for(int i = 0; i<10; i++) { arr[i] = i+1; } return arr; }
在 main() 函式中,呼叫函式 retArray(),並且指標 ptr 指向陣列 arr 的開頭。使用 for 迴圈顯示陣列元素。展示這一過程的程式碼片段如下。
int main() { int *ptr = retArray(); cout <<"The array elements are: "; for(int i = 0; i<10; i++) { cout<< ptr[i] <<" "; } return 0; }
廣告