我試圖將對二維數組的引用傳遞給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 關注
- 1389 瀏覽
添加回答
舉報
0/150
提交
取消