為什麼 C++ 不支援返回陣列的函式


我們來看一下這個程式:

 現場演示

#include <iostream>
using namespace std;
int* Array() {
   int a[100];
   a[0] = 7;
   a[1] = 6;
   a[2] = 4;
   a[3] = 3;
   return a;
}
int main() {
   int* p = Array();
   cout << p[0] << " " << p[1]<<" "<<p[2]<<" "<<p[3];
   return 0;
}

在這個程式中,我們得到了警報:

輸出

In function 'int* Array()':
warning: address of local variable 'a' returned [-Wreturn-local-addr]
int a[100];

我們返回了局部變數的地址,但這不可能,因為在函式呼叫結束後,區域性變數可能不在記憶體中。因此,C++ 不支援返回陣列的函式。

更新時間: 2019 年 7 月 30 日

100 次瀏覽

開啟您的職業生涯

完成課程即可獲得認證

開始學習
廣告