2014-01-31 132 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]