本地数组不能直接从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; }