2012-08-02 59 views
0

可能重複:
How Pointer of Multi-Dimension Arrays Work in C勘定INT ***爲int [] [] []

我需要一個int***指向一個int[][][]的值,但是當我循環遍歷行,列和層,並將ptr[r][c][l]指定爲val[r][c][l],我得到了分段錯誤。

有人可以告訴我如何分配int***int[][][]

這裏是我的代碼:

int row=2; 
int col=3; 
int layer=4; 

int arr[2][3][4] = {{{1, 2, 3, 4}, {1, 2, 3, 4}, {1, 2, 3, 4} },{ {1, 2, 3, 4}, {1, 2, 3, 4}, {1, 2, 3, 4} } }; 

char _mode = 'h'; 

int*** ptr ; 


for (int r=0;r<row;r++) 
    { 
    for (int c=0;c<col;c++) 
     { 
     for (int l=0;l<layer;l++) 

      { 

      ptr[row][col][layer] = arr[row][col][layer]; 

      } 
     } 
    } 

cout <<findExtreme(ptr, row, col, layer, _mode)<<endl; 

這裏是被稱爲

int findExtreme(int*** arr,int row,int col,int layer, char _mode) 
{ 
int val = 0; 



for (int r=0;r<row;r++)  
    { 
    for (int c=0;c<col;c++) 
     { 
     for (int l=0;l<layer;l++) 
      { 
      if (_mode == 'h') 
       if (arr[r][c][l] > val) 
        val = arr[r][c][l]; 
      if (_mode == 'l') 
       if (arr[r][c][l] < val) 
        val = arr[r][c][l]; 
      } 
     } 
    } 
    return val; 

} 
+5

如果您發佈了您擁有的代碼,將會更容易讓某人發現問題。 – hmjd 2012-08-02 08:18:02

+1

你的'int [] [] []'是否有合適的大小? – 2012-08-02 08:18:11

+0

你能告訴我們代碼嗎? – shengy 2012-08-02 08:19:13

回答

2

你不能做到這一點的功能。您可能想要

int val[1][2][3]; 
int (*ptr)[1][2][3] = &val; 
+0

這不起作用,因爲我需要一個int ** *爲功能 – user1490896 2012-08-02 16:27:48

+0

@ user1490896那麼你是運氣不好。您可以使用三指針創建數組的副本並將其傳遞。 – 2012-08-02 16:29:41

相關問題