我刚刚开始学习C++。我正在阅读互联网上的教程,现在我在函数中创建了一个动态分配的数组。
void array_() {
int size;
cin >> size;
int * Array = new int[size];
for (int i = 0; i < size; ++i)
cin >> Array[i];
}
如何将此函数返回给 main()
原文由 KonradDos 发布,翻译遵循 CC BY-SA 4.0 许可协议
在 C++ 中,您不能“按原样”从函数返回 数组 类型的变量(即
int arr[]
),尽管您可以返回指向 数组 的引用或指针。不过,这是一些相当笨拙的语法。在显示的代码中,没有 _数组_,而是指向一块动态分配的内存的指针。然而,主要问题是,由于内存是动态分配的,当您返回指向该内存的指针时,您只向客户端提供了一半的信息:数组的大小仍然未知。因此,如果您真的想坚持使用动态分配的传统数组,您可以将数组的大小作为参考参数(“out-value”)传递给如下函数:
如您所见,手动分配内存的副作用是客户端负责它,您必须 在分配它的函数之外 手动删除它。
但是“out-values”确实是一种糟糕的风格,尤其是在 API 中。尽可能避免它们!
当然最好使用适当的动态数组工具,例如
std::vector<T>
,但这似乎不是练习的重点。使用的参考: 在函数中返回数组