如何从C++函数返回本地数组
在这里,我们将构建一个C++程序,以从函数返回本地数组。并将使用三种方法正确方式返回数组的方法,即:
- 使用 动态分配的数组
- 使用 静态数组
- 使用 结构
警告:
上面的程序是 错误的 。它可能产生10或20的值作为输出,也可能产生垃圾值或会崩溃。问题在于,我们返回一个本地变量的地址,这是不被建议的,因为本地变量在函数调用结束后可能不存在于内存中。
以下是一些返回数组的正确方法
1.使用动态分配的数组
动态分配的内存(使用new或malloc()分配)保留到我们使用delete或free()删除为止。因此我们可以创建一个动态分配的数组,并在函数退出时删除它。
示例:
输出
2.使用静态数组
静态变量的生命周期是整个程序。因此我们始终可以创建一个本地静态数组并返回它。
示例:
输出
3.使用结构
我们可以将数组包装在结构/类中并返回结构/类的实例。这项工作的原因是,结构体/类的成员数组是深度复制的。在下面的程序中,当我们返回的实例在main中被复制时,就会发生深层复制。
示例:
输出