【问题标题】:Assigning int*** to int[][][] [duplicate]将 int*** 分配给 int[][][] [重复]
【发布时间】:2012-08-02 08:17:02
【问题描述】:

可能重复:
How Pointer of Multi-Dimension Arrays Work in 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[][][] 大小合适吗?
  • int[][][] 是什么?数组 ?数组只有第一维可以为空
  • 哦,又是一个三星级程序员。
  • 你的int ***是一个交错数组,int [][][]是一个多维数组,你需要保证它们的大小相同

标签: c++


【解决方案1】:

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

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

【讨论】:

  • 这不起作用,因为我需要一个 int*** 函数
  • @user1490896 那么你就不走运了。您可以使用三指针创建数组的副本并传递它。
猜你喜欢
  • 2014-10-10
  • 2013-10-15
  • 1970-01-01
  • 2011-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-10
  • 2019-05-18
相关资源
最近更新 更多