我有一個指向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