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