如何从 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;
}
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP