2015-02-24 29 views
0
const int width = 100, height = 100; 
void clearBoard(bool *board[]); 

int main(int argc, char *argv[]) 
{ 

    bool gameboard[width][height]; 
    clearBoard(gameboard); 

    QApplication a(argc, argv); 
    MainWindow window; 
    window.show(); 

    return a.exec(); 
} 

void clearBoard(bool *board[]){ 
     for(int x = 0; x < width; x++) 
     for(int y = 0; y < height; y++) 
      board[x][y] = false; 
} 

手頭的錯誤是:傳遞一個二維數組的方法

C2664: 'void clearBoard(bool *[])' : cannot convert argument 1 from 'bool [100][100]' to 'bool *[]' 

我想我的基本認識是如何工作的指針,和2D的指針,但出於某種原因,這不會工作。如果有人能夠解釋我發生了什麼問題,我會很喜歡它。

+1

你應該有'布爾板[] [100]'在功能參數... – 2015-02-24 18:29:47

+0

清楚,尷尬,謝謝:d – Patidati 2015-02-24 18:32:20

+0

可能重複:http://stackoverflow.com/questions/8767166/passing-2d-array-to-function – 2015-02-24 18:33:45

回答

1

當傳遞一個n維數組作爲函數參數時,可以只讓第一維隱含。請嘗試:

void clearBoard(bool board[][height]){ 
     for(int x = 0; x < width; x++) 
     for(int y = 0; y < height; y++) 
      board[x][y] = false; 
} 
+0

您應該提及其他方法,例如指向指針方法或指針數組方法的指針。 – 2015-02-24 18:35:31