对于数组,为什么a[5]==5[a]?

正如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)相同,从小学数学中我们知道它们是相等的(加法是可交换的)

发表评论