2014-01-31 190 views
0

所以我有一個指針的2D陣列,像這樣:C++傳遞指針多維數組

int board[3][5] = { 3, 5, 2, 2, 1, 3, 4, 34, 2, 2, 3, 4, 3, 223, 923 }; 
int* ptr[sizeof(board[0])/sizeof(board[0][0])] = board; 

我試圖跟隨this example。但由於某種原因,我得到的錯誤:

IntelliSense: initialization with '{...}' expected for aggregate object

任何想法是什麼問題是?

+1

這個問題有答案[這裏](http://stackoverflow.com/questions/859634/c-pointer-to-array-array-of-pointers-disambiguation) – Kevin

回答

1

分配指針到所述陣列的所述第一元件像下面

int (*ptr)[5] = board; 

注:柱尺寸[5]在指針聲明應等於原來的2維陣列列大小[5]。 聲明行大小[3]是可選的。

int main() { 

    int board[3][5] = { 3, 5, 2, 2, 1, 3, 4, 34, 2, 2, 3, 4, 3, 223, 923 }; 

    /* 
    // 3 Rows 5 Columns Matrix 
     int board[3][5] = { {3, 5, 2, 2, 1 }, 
          {3, 4, 34, 2, 2 }, 
          {3, 4, 3, 223, 923} 
         }; 
    */ 

    // Assign pointer to the first element of the array 
    int (*ptr)[5] = board; 

    for(int i=0; i< (3*5); i++) { 
     std::cout<<(*ptr)[i]<<std::endl; 
    } 

    return 0; 
} 
0

二維數組與指針數組不相同。你不能直接將一個轉換爲另一個。

0

我只需要把()放在* ptr周圍。我不知道這是如何修復它,但現在我可以做ptr[1][2]