C多维数组中的奇怪数组语法

时间:2011-11-13 02:49:57

标签: c arrays multidimensional-array pointer-arithmetic

我知道这是真的:

x[4] == 4[x]

多维数组的等价物是什么?以下是真的吗?

x[4][3] == 3[x[4]] == 3[4[x]]

2 个答案:

答案 0 :(得分:14)

x[y]定义为*(x + (y))

x[y][z]将成为*(*(x + (y)) + z)

x[y[z]]将成为*(x + (*(y + (z))))


x[4][3]*(*(x + (4)) + 3) 变为*(*(x + 4) + 3)

3[x[4]]*(3 + (*(x + (4))))成为*(*(x + 4) + 3)

3[4[x]]*(3 + (*(4 + (x))))成为*(*(x + 4) + 3)

这意味着它们都是等价的。

答案 1 :(得分:1)

是。在每种情况下,x是一个衰减到指针然后在其上执行指针运算的数组。