2013-05-13 71 views
2

我試圖讓我的頭在此,但因爲我是新來的CI無法想象它將如何在或超越3D數組。我知道我們不得不提到靜態1D數組的大小,但在二維數組,第一個維度是在聲明中可選爲:?對於X大於1的X維數組,只有第一維是可選的,其餘是強制性的?

int arr[][2]={{2,3},{4,8},{5,3}}; 

但對於X維數組爲以下確定或僅僅是第一維選購一提的休息有必要嗎?

int arr[][][2]= blah blah; 
int arr[][][][8]= blah blah; 

我知道,在二維陣列的上述情況下,第二個維度是必要使用arr執行指針算法,但我怎麼也想不到事情會或不會對數組,其尺寸制定大於2.

+0

注意a [3] [2]與[3 * 2 + 2]相同。把它們寫成多維的簡單方便 – 2013-05-13 08:39:59

回答

4

只有一個可以留空。爲了知道如何獲得一個特定的值,它需要能夠計算除第一個值之外的所有東西的偏移量。

例如:

char數組[] [3]

系統知道去三個字節(假定1字節字符)*數組索引+ 1的第一部分中每一部分第二。

char數組[] [2] [3]

系統知道去6個字節(2 * 3)字節*數組索引+ 3 *的第一部分的第二部分+ 1 *最後部分。

如果2不存在,則根據第一個索引的值,您無法計算出需要補償多少。

+0

你能再詳細一點嗎?我可以看到,指針算術可能會失敗,否則,一些更多的細節會幫助很多。 – Thokchom 2013-05-13 08:39:54

+0

您是否已經看到更新後的答案並想要更多,或只看到原始答覆? – xaxxon 2013-05-13 08:40:31

+0

我只看到原始的:-) – Thokchom 2013-05-13 08:43:16

相關問題