我有一个指向4维数组的指针;我想用它来为4维数组赋值。使用多指针数组指针
我知道什么是创建一个4维数组并使用指针浮
float dArray [2][3][4][5];
float *ptr = &dArray[0][0][0][0];
通过它遍历什么,我挣扎是,如果我有指针4dimensional阵列
float ***pointerArray4D[];
和说我想在它下面的数组中使用它的存储值 - 我该怎么做。
value = 0;
for (int ix0 = 0; ix0 < DIM0; ++ix0)
for (int ix1 = 0; ix1 < DIM1; ++ix1)
for (int ix2 = 0; ix2 < DIM2; ++ix2)
for (int ix3 = 0; ix3 < DIM3; ++ix3)
pointerArray4D[ix0][ix1][ix2][ix3] = float(value++);
我试图做的是
1)
float pointerArray4D_1[2][3][4][5];
float ***pointerArray4D[5];
pointerArray4D = pointerArray4D_1;
2),我想我应该做的另一件事是分配内存吧
pointerArray4D=new float*[2];
for(int i=0; i<2; ++i)
pointerArray4D[i]=new float*[3];
for(int i=0; i<3; ++i)
pointerArray4D[i]=new float*[4];
for(int i=0; i<4; ++i)
pointerArray4D[i]=new float[5];
错误:期望的构造函数,析构函数或类型转换在'='标记之前
不用多说了新的蜜蜂学习艺术的:)
编辑 - 采用双层代表我能够穿越
注意,这个答案假定C,这是不一样的东西C++。 – 2014-11-03 22:20:53
'float *** pointerArray4D [];'不声明'float ****'。在C++中它是非法的。在C中它在文件范围内是合法的,并且是'float ***'数组的临时定义,但是OP似乎总是在块范围内使用它。 – 2014-11-03 22:57:01
@MattMcNabb,我确实已经注意到我的答案属于C而不是C++。关于C,cdecl调用'float *** pointerArray4D []''float *'的一个*数组*的声明,其衰变为'float ****',而不是'float ***'。我承认在那里存在一些不精确的地方,但是对于大多数意图和目的,'float ****'可以代替'float *** pointerArray4D []'在任何后者被允许的地方使用。 – 2014-11-03 23:18:48