我试图将对二维数组的引用传递给C ++中的函数。我知道在编译时这两个维度的大小。这是我现在所拥有的:const int board_width = 80;const int board_height = 80;void do_something(int[board_width][board_height]& array); //function prototype但这是行不通的。我从g ++收到此错误:error: expected ‘,’ or ‘...’ before ‘*’ token此错误是什么意思,我该如何解决?
3 回答
慕无忌1623718
TA贡献1744条经验 获得超4个赞
尽管您可以将引用传递给数组,但是由于数组在未绑定到引用参数的情况下会衰减为函数调用中的指针,并且您可以像数组一样使用指针,因此更常见的是在函数调用中使用数组,如下所示:
void ModifyArray( int arr[][80] );
或同等
void ModifyArray( int (*arr)[80] );
在函数内部,可以像使用函数声明一样使用arr:
void ModifyArray( int (&arr)[80][80] );
这种情况唯一不成立的情况是当被调用函数需要静态检查第一个数组索引的大小的保证。
牛魔王的故事
TA贡献1830条经验 获得超3个赞
您可能要尝试使用cdecl或c ++ decl。
% c++decl
c++decl> declare i as reference to array 8 of array 12 of int
int (&i)[8][12]
c++decl> explain int (&i)[8][12]
declare i as reference to array 8 of array 12 of int
c++decl> exit
- 3 回答
- 0 关注
- 1354 浏览
添加回答
举报
0/150
提交
取消