比较来自世界各地的卖家的域名和 IT 服务价格

如何将链接传输到二维功能数组?

我试图给出一个链接到二维功能数组 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


这个错误是什么意思,我怎么能修复它?
已邀请:

詹大官人

赞同来自:

如果您在编译期间知道大小,它会这样做:


//function prototype
void do_something/int /&array/[board_width][board_height]/;


做它


void do_something/int array[board_width][board_height]/;


实际上,指针将被传送到二维数组的第一子阵列 /"board_width" 完全被忽略,如在退化的情况下,当你有一个维度时
int array[]

, 拿指/, 什么可能不是你想要的 /因为你清楚地问了链接/. 因此,使用参考使用 sizeof 对于参数
sizeof array

, 你会得到
sizeof/int[board_width][board_height]/

/好像你用争论本身这样做了/, 在用第二种方法制作 /宣布作为数组的参数,从而使编译器将其转换为指针/, 你会得到
sizeof/int/*/[board_height]/

, 因此,只是 sizeof 指针。

江南孤鹜

赞同来自:

虽然您可以将链接发送到数组,因为当它们未与参考参数无关时,数组在函数调用中崩解为指针,但您可以使用与数组相同的指针,大多数阵列都用于呼叫这样的功能:


void ModifyArray/ int arr[][80] /;


或同等学历


void ModifyArray/ int /*arr/[80] /;


在功能内 arr 您可以使用几乎与声明函数相同:


void ModifyArray/ int /&arr/[80][80] /;


唯一的案例未完成, - 这是当被称为函数需要静态验证的第一个数组索引的尺寸的保证时。

龙天

赞同来自:

你可能想要尝试

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

窦买办

赞同来自:

语法不忠。

参加例子 1D 米利卡


int a[] = {1,2,3};
int /&p/ [3] = a; // p is pointing array a


所以你可以对数组做同样的事情 2D, 如下所示


const int board_width = 80;
const int board_height = 80;
void do_something/int /&array/ [board_width][board_height]/;

诸葛浮云

赞同来自:

我认为这是你想要的:


void do_something/int array[board_width][board_height]/;


您无法将链接数组传递给函数。

要回复问题请先登录注册