0
可以使單維陣列指向三維陣列的第一個地址,例如 。 int *array; int ***array3D; array=*array3D;
我需要第一個數組指向第二個數組的第一個地址。 我只需要指針的第一個地址。任何人都可以請建議任何選擇指向起始地址?提前致謝。將三維指針的首地址變爲單維指針的問題?
可以使單維陣列指向三維陣列的第一個地址,例如 。 int *array; int ***array3D; array=*array3D;
我需要第一個數組指向第二個數組的第一個地址。 我只需要指針的第一個地址。任何人都可以請建議任何選擇指向起始地址?提前致謝。將三維指針的首地址變爲單維指針的問題?
當你處理2D和3D圖像時,這種事情總是發生。
你寫的(array = *array3D
)顯然不會編譯,因爲類型不匹配。 array3D
是**int
,數組是*int
。
如果你有array3D
設置正確,因爲這樣(例如):
int ***array3D = new int **[zsize];
for(int z = 0 ; z < zsize ; ++z)
{
array3D[z] = new int *[ysize];
for(int y = 0 ; y < ysize ; ++y)
{
array3D[z][y] = new int [xsize];
}
}
然後你就可以訪問之類的東西array3D[z][y]
(指向x=0
元素對於給定的z
和y
) 或&(array3D[z][y][x])
(指向元件x
,y
,z
) 或*(array3D[z])
(點爲給定的z
和y=0
x=0
元件),並且將然後全部是int *
。我建議寫出你的數據是如何組織的。
當然,你也必須手動刪除這個結構,如果你在產品中這樣做,你應該小心處理異常,不要泄漏,但這是另一個話題。
需要格式化代碼並重新發布。你也不能解除引用'void *'。給出任何其他數據類型的例子。 – iammilind 2011-04-16 11:42:28
@iammilind:但是您可以解除引用void **或void ***。 – 2011-04-16 11:49:13
你想指向第一個元素的*地址*(即指向指針處的點),還是指向第一個元素*本身*? – 2011-04-16 11:50:59