为什么 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 次浏览

开启您的职业生涯

完成课程即可获得认证

开始学习
广告