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

C++ 如何将3d int*指针数组传递给函数并检查是否已满?,c++,multidimensional-array,C++,Multidimensional Array,我有一个3d数组,我喜欢通过指针或数组传递给函数,该函数将检查第三次降级是否包含元素, 这是我的阵列: 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) {

我有一个3d数组,我喜欢通过指针或数组传递给函数,该函数将检查第三次降级是否包含元素, 这是我的阵列:

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;

              }
        }
  }
这里有两个问题
1.如何检查LevelsArray[0][0]长度?

2.如何将此3d数组传递给检查数组[][]长度的函数C++和C数组非常简单;它们不知道它们的大小,也不知道在传递给函数时会衰减为指针。(或者当使用
new
malloc
在堆上分配内存时,它们已经由指针表示-这就是
sizeof
-代码将数组大小计算为1的原因。)

如果您想使用简单的C++数组,则必须显式传递维度,或者定义C样式字符串与终止<代码> \ 0”< /代码>有关的前哨值。最好将数组封装在跟踪维度的

结构中,例如:

struct {
    size_t dim1, dim2, dim3;
    int*** data;
}

您可以在其中编写用于内存管理的构造函数和析构函数。

C++和C数组非常简单;它们不知道它们的大小,也不知道在传递给函数时会衰减为指针。(或者当使用
new
malloc
在堆上分配内存时,它们已经由指针表示-这就是
sizeof
-代码将数组大小计算为1的原因。)

如果您想使用简单的C++数组,则必须显式传递维度,或者定义C样式字符串与终止<代码> \ 0”< /代码>有关的前哨值。最好将数组封装在跟踪维度的

结构中,例如:

struct {
    size_t dim1, dim2, dim3;
    int*** data;
}

您可以在其中编写用于内存管理的构造函数和析构函数。

LevelsArray
是指针,
sizeof(LevelsArray)
将为您提供
sizeof(指针)
而不是
sizeof(数组)
因此您需要单独计算数组中的元素数。两个指针的大小之比为1。您无法检查
LevelsArray[0][0]
的长度;你必须知道长度是多少。不能将3D数组传递给函数,让函数检查它;您必须告诉函数数组的维度。如果您显示
LevelsArray
的声明,将会有所帮助;我假设它是
int***LevelsArray
LevelsArray
是一个指针,
sizeof(LevelsArray)
将为您提供
sizeof(指针)
而不是
sizeof(数组)
,因此您需要分别计算数组中的元素数。两个指针的大小之比为1。您无法检查
LevelsArray[0][0]
的长度;你必须知道长度是多少。不能将3D数组传递给函数,让函数检查它;您必须告诉函数数组的维度。如果您显示
LevelsArray
的声明,将会有所帮助;我假设它是
int***LevelsArray