2012-08-02 37 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

相关问题