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