2012-10-17 59 views
0

這裏有兩種方法可以動態分配一個多維數組,我知道:記憶圖

int (*numbers)[4] = new int[3][4] 

int **numbers = new int*[3]; 

做這兩個在內存中表示同樣的事情? 。實際上他們代表什麼以及如何表示? (內存圖真的會有幫助!)

回答

3

不,第一個將創建12個整數(3 * 4),在內存中它們將按順序排列。第二個創建3個指向整數

即第一覽會出像

[1,2,3,4][5,6,7,8][9,10,11,12] 

,所以你有一個整數,wheras第二個例子是要看起來更像

[0x12345678,0x12345678,0x12345678] 
3個4元素數組

即,3個未初始化的指針指向整數

+0

你能解釋更多「數字」代表什麼? – Chin

+0

第一個'numbers'是一個指向4個整數數組的指針。第二個'numbers'是指向一個整數的指針。 – hexist

+0

一個指向4個整數數組的指針如何保存12個整數的地址? 指向一個整數指針的指針如何保持3個指針指向整數的地址? 對不起,我有點困惑 – Chin