正如Joel在C编程语言(又名:K&;R)的Stack Overflow podcast#34中指出的那样,C中提到了数组的这个属性:a[5]==5[a]
乔尔说这是因为指针运算,但我还是不明白为什么a[5]==5[a]
C标准对[]
运算符的定义如下:
a[b]=*(a+b)
因此,a[5]
将评估为:
*(a+5)
而5[a]
将评估为:
*(5+a)
a
是指向数组第一个元素的指针a[5]
是距离a
更远的5个元素的值,它与*(a+5)
相同,从小学数学中我们知道它们是相等的(加法是可交换的)