a [10]和10 [a]之间的差异

时间:2013-02-18 09:44:51

标签: c arrays

以下代码

a[10] == 10[a]

结果似乎是C语言中的true

C编译器如何将它们视为相同?

2 个答案:

答案 0 :(得分:6)

编译器如下所示:

a[10] == *(a + 10) == *(10 + a) == 10[a]

检查this以获得更好的解释。

答案 1 :(得分:2)

a [10]表示:“从内存地址10开始,添加一个并引用结果位置” 10 [a]表示:“从内存地址a开始,向其添加10并引用结果位置”

由于+ 10与10 + a相同,因此两个表达式都将引用相同的内存位置。