首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将二维数组作为参数传入函数,并在c++中返回二维数组?

如何将二维数组作为参数传入函数,并在c++中返回二维数组?
EN

Stack Overflow用户
提问于 2012-12-05 21:32:45
回答 4查看 476关注 0票数 1

在C++中,如何将二维数组作为参数传递给函数,该函数返回二维数组?

如果我有一个数组定义如下:

代码语言:javascript
复制
struct Hello
{
   int a;
   int b;
};

Hello hello[3][3] = {.......};

如何在函数中返回上面的数组?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-12-06 05:58:28

代码语言:javascript
复制
Hello(&f(Hello(&In)[3][3])) [3][3] {
    //operations
    return In; 
} 
票数 4
EN

Stack Overflow用户

发布于 2012-12-05 21:34:52

答案取决于您所说的二维数组是什么。

C++的方法是拥有一个std::vector<std::vector<Type> >,在这种情况下,答案是这样的

代码语言:javascript
复制
typedef std::vector<std::vector<myType> > Array2D;

Array2D f(const Array2D& myArray)
{

}

如果您已经在Type**中动态分配了数组,如下所示

代码语言:javascript
复制
Type** p  = new Type*(n);
for(int i = 0; i < n; ++i)
{
    p[i] = new Type(m);
}

然后,您可以简单地将Type**与维度一起传递。

代码语言:javascript
复制
... f(Type** matrix, int n, int m);

如果你有一个普通的2D数组,如

代码语言:javascript
复制
 Type matrix[N][M];

然后,您可以将其作为

代码语言:javascript
复制
template<int N, int M>
... f(Type (&matrix)[N][M]);

我故意将前面两个示例中的返回类型留空,因为它取决于返回的内容(传递的数组或新创建的数组)和所有权策略。

票数 4
EN

Stack Overflow用户

发布于 2012-12-05 22:30:34

很难读懂(推荐使用typedef),但你可以这样做:

代码语言:javascript
复制
Hello(&f(Hello(&A)[3][3])) [3][3] {
    // do something with A
    return A; 
} 

如果这是相同的数组,则实际上不需要返回。取而代之的是返回void -语法会简单得多。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13724432

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档