如何从 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 次浏览

开启你的 职业 生涯

完成课程即可获得认证

开始
广告
© . All rights reserved.