c++ - 返回一个数组......而不是一个数组的引用或指针

标签 c++ arrays return

我有点懵。有两种方法可以从方法返回数组。第一个建议如下:

typedef int arrT[10];
arrT *func(int i);

但是,我如何捕获一个 int (*)[] 类型的返回值?

另一种方式是通过引用或指针:

int (*func(int i)[10];

int (&func(int i)[10];

返回类型是 int (*)[] 或 int (&)[]。

我遇到的问题是如何分配一个变量来接受该点,并且我继续收到如下错误:

can't convert int* to int (*)[]

知道我做错了什么或我的知识不足吗?

最佳答案

如果要按值返回数组,请将其放入结构中。

标准委员会已经这样做了,因此您可以使用 std::array<int,10> .

std::array<int,10> func(int i);
std::array<int,10> x = func(77);

这也使得通过引用返回变得非常简单:

std::array<int,10>& func2(int i);
std::array<int,10>& y = func2(5);

关于c++ - 返回一个数组......而不是一个数组的引用或指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14045951/

相关文章:

c++ - find_if 和 map 的仿函数,避免复制值

c++ - 如何确定另一个结构中的结构数组的长度

c++ - OpenCV Apple Mach-O 链接器错误 - 架构 x86_64 的 undefined symbol

c++ - 构建 XML 文件时如何查看 IXMLDOMElementPtr 的内容?

c - 两个数组给出第三个数组的最大值

Java - 使用 Gson 库从 servlet 返回 JSON

c# - 从 lambda 返回数组索引但抛出 IndexOutOfRangeException

c# - 从方法返回列表 - 速记?

c++ - _GetExceptDLLinfo 是什么?

ruby - 如何根据另一个数组重新排序数组?