如何将3d int*指针数组传递给函数并检查是否已满?

use*_*898 0 c++ multidimensional-array

我有这个3d数组,我喜欢通过指针或数组传递函数,将检查第3降级是否有元素,这是我的数组:

LevelsArray = new int**[LEVELS_COUNT];
  for (int i = 0; i < LEVELS_COUNT; ++i) 
  {
        LevelsArray[i] = new int*[MAX_ROW];  
        for (int j = 0; j < MAX_ROW; ++j)
        {
              LevelsArray[i][j] = new int[MAX_CELL];

              for(int z =0;z < MAX_CELL; ++z)
              {
                  LevelsArray[i][j][z] = 1;

              }
        }
  }
Run Code Online (Sandbox Code Playgroud)

现在,当我试图检查它的长度时,总是给我1

当我尝试:

(sizeof((LevelsArray))/sizeof((LevelsArray[0][0])))
Run Code Online (Sandbox Code Playgroud)

这里有2个问题
1.如何检查LevelsArray [0] [0]长度?
2.如何将此3d数组传递给检查array [] []长度的函数

M O*_*ehm 5

C++和C数组非常简单; 传递给函数时,他们不知道它们的大小和衰减成指针.(或者当在堆上分配内存时,它们已经被指针表示,new或者malloc- 这就是为什么你的sizeof代码将数组大小评估为1 的原因.)

如果要使用简单的C++数组,则必须显式传递维度,或者将C类型字符串与终止值一起定义一个sentinel值'\0'.将数组包装在struct跟踪维度的数据中可能是个好主意,例如:

struct {
    size_t dim1, dim2, dim3;
    int*** data;
}
Run Code Online (Sandbox Code Playgroud)

您可以在其中为内存管理编写构造函数和析构函数.