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