2011-04-16 46 views
0

可以使單維陣列指向三維陣列的第一個地址,例如 。 int *array; int ***array3D; array=*array3D; 我需要第一個數組指向第二個數組的第一個地址。 我只需要指針的第一個地址。任何人都可以請建議任何選擇指向起始地址?提前致謝。將三維指針的首地址變爲單維指針的問題?

+0

需要格式化代碼並重新發布。你也不能解除引用'void *'。給出任何其他數據類型的例子。 – iammilind 2011-04-16 11:42:28

+0

@iammilind:但是您可以解除引用void **或void ***。 – 2011-04-16 11:49:13

+0

你想指向第一個元素的*地址*(即指向指針處的點),還是指向第一個元素*本身*? – 2011-04-16 11:50:59

回答

0

當你處理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元素對於給定的zy) 或&(array3D[z][y][x])(指向元件xyz) 或*(array3D[z])(點爲給定的zy=0x=0元件),並且將然後全部是int *。我建議寫出你的數據是如何組織的。

當然,你也必須手動刪除這個結構,如果你在產品中這樣做,你應該小心處理異常,不要泄漏,但這是另一個話題。