标签: c arrays
以下代码
a[10] == 10[a]
结果似乎是C语言中的true
true
C编译器如何将它们视为相同?
答案 0 :(得分:6)
编译器如下所示:
a[10] == *(a + 10) == *(10 + a) == 10[a]
检查this以获得更好的解释。
答案 1 :(得分:2)
a [10]表示:“从内存地址10开始,添加一个并引用结果位置” 10 [a]表示:“从内存地址a开始,向其添加10并引用结果位置”
由于+ 10与10 + a相同,因此两个表达式都将引用相同的内存位置。