2016-04-10 20 views
-6

假設我們有一個多維數組。How&multi [3] [0]和*(multi + 3)是一回事嗎?

multi[3][10] 

然後&multi[0][0]

如果我們想訪問的任何元素數組英寸我們只需要一個解引用。因爲它位於不斷。我無法理解雙引號。 作爲

*(*(multi+row)+column) 
+0

「'&multi [0] [0]'將會是'multi'' - 不會的。如果您嘗試打印它,它可能會打印出相同的內容,但它們的類型完全不同。解引用第一個將產生與解引用第二個完全不同的結果。 – user2357112

+0

什麼是類型? –

+0

@SaketAnand;你不認識「類型」,認真嗎? – haccks

回答

2

&multi[0][0]是陣列multi的第一元件,其等效於multi[0]的地址。

multi是一維數組的數組。當在表達式中使用時,multi將衰減爲指向它的第一個元素,但操作數爲sizeof和一元&時除外。
在表達式

*(*(multi+row)+column) 

*是取消引用一維數組(行)和所述外*是取消引用該行的元件。

*(multi + row) => multi[row] 
*(*(multi+row)+column) => *(multi[row] + column) => multi[row][column] 
+0

你的意思是multi [0]是一個指針。所以打印它應該給地址。但它正在給予價值。 –

+0

'multi [0]'是一個10'int'的數組。衰減規則將像其他數組一樣應用於它。 – haccks

+0

Int * ptr = multi –