首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过引用传递3维定长数组

通过引用传递3维定长数组
EN

Stack Overflow用户
提问于 2010-11-29 04:17:30
回答 4查看 1.8K关注 0票数 2

有人能提示一下如何通过引用传递这种类型的数组吗?

代码语言:javascript
运行
复制
int array[2][3][4];

这样我就可以保存他的指针,以便使用和修改数组?比如,如果我说的是一个整数:

代码语言:javascript
运行
复制
// Scope 1
int a = 3;
increment(&a);
// End Scope 1

// Scope 2
int *pa;
void increment(int *tpa) { 
  pa = tpa; *pa++; 
}
// End Scope 2

非常感谢并致以最良好的问候。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-11-29 06:22:39

感谢所有参与这项活动的人!sskuce提供了一个非常好的解决方案,利用了“容器”。我曾考虑过这一点,但并不是真的喜欢额外的东西。我意识到在有点混乱之后,James McNellis一直都给出了答案。所以..。下面是我更喜欢的没有容器和索引算法的解决方案(注意括号):

代码语言:javascript
运行
复制
void Scope1() 
{
    int array[2][3][4];
    Scope2(&array);
}

int (*pArray)[2][3][4];

void Scope2(int (*tpArray)[2][3][4])) 
{
    pArray = tpArray;
    (*pArray)[0][0][0] = 3;
}

再次感谢大家。

票数 2
EN

Stack Overflow用户

发布于 2010-11-29 04:22:38

如果你真的想通过引用传递数组,你可以这样做:

代码语言:javascript
运行
复制
void f(int (&a)[2][3][4]) { }

在没有引用的C中,你可以通过指针传递数组(当然,这在C++中也是有效的):

代码语言:javascript
运行
复制
void f(int (*a)[2][3][4]) { }
票数 8
EN

Stack Overflow用户

发布于 2010-11-29 04:24:04

C++:

代码语言:javascript
运行
复制
void f(int (&array)[2][3][4])
{
}

C: C中没有引用

请注意,无论您如何传递数组,通过引用或不通过引用,数组都不会被复制,因此您将获得原始指针。你也可以像这样传递这个数组:

代码语言:javascript
运行
复制
void f(int array[][3][4])
{
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4298834

复制
相关文章

相似问题

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