2016-04-10 21 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 –