0

重複の可能性:
C で多次元配列のポインターがどのように機能するか

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;

}
4

1 に答える 1

2

それをしてはいけない。あなたはおそらくしたい

int val[1][2][3];
int (*ptr)[1][2][3] = &val; 
于 2012-08-02T08:21:39.173 に答える