如何從 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;
}

更新於:26-6-2020

698 次瀏覽

開啟你的 職業 生涯

完成課程即可獲得認證

開始
廣告