将int***赋值给int[][][]

Assigning int*** to int[][][]

本文关键字:int 赋值      更新时间:2023-10-16

可能重复:
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;
}

你不能那样做。你可能想要

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