如何将 3d int* 指针数组传递给函数并检查是否已满?
How to pass 3d int* pointer array to function and check if full?
我有这个 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;
}
}
}
现在,当我尝试检查它的长度时,它总是给我 1
当我尝试时:
(sizeof((LevelsArray))/sizeof((LevelsArray[0][0])))
这里有 2 个问题
1.如何查看LevelsArray[0][0]的长度?
2. 如何将此 3d 数组传递给检查数组 [][] 长度
的函数
C++和C数组非常简单;他们不知道自己的大小,并且在传递给函数时会衰减为指针。 (或者当使用 new
或 malloc
在堆上分配内存时,它们已经由指针表示 - 这就是为什么您的 sizeof
代码将数组大小评估为 1。)
如果您想使用简单的 C++ 数组,您必须显式传递维度或定义标记值,就像 C 风格的字符串对终止 '[=14=]'
所做的那样。将数组包装在跟踪尺寸的 struct
中可能是个好主意,例如:
struct {
size_t dim1, dim2, dim3;
int*** data;
}
您可以在其中编写用于内存管理的构造函数和析构函数。
我有这个 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;
}
}
}
现在,当我尝试检查它的长度时,它总是给我 1
当我尝试时:
(sizeof((LevelsArray))/sizeof((LevelsArray[0][0])))
这里有 2 个问题
1.如何查看LevelsArray[0][0]的长度?
2. 如何将此 3d 数组传递给检查数组 [][] 长度
C++和C数组非常简单;他们不知道自己的大小,并且在传递给函数时会衰减为指针。 (或者当使用 new
或 malloc
在堆上分配内存时,它们已经由指针表示 - 这就是为什么您的 sizeof
代码将数组大小评估为 1。)
如果您想使用简单的 C++ 数组,您必须显式传递维度或定义标记值,就像 C 风格的字符串对终止 '[=14=]'
所做的那样。将数组包装在跟踪尺寸的 struct
中可能是个好主意,例如:
struct {
size_t dim1, dim2, dim3;
int*** data;
}
您可以在其中编写用于内存管理的构造函数和析构函数。