正如Joel 在C编程语言(又名:K&R)中的Stack Overflow Podcast#34中指出的那样,在C中提到了数组的此属性:a[5] == 5[a]
乔尔(Joel)说,这是因为指针运算,但是我还是不明白。为什么a[5] == 5[a]呢
C标准将[]运算符定义如下:
a[b] == *(a + b)
因此a[5]将评估为:
*(a + 5)
并且5[a]将计算为:
*(5 + a)
a是指向数组第一个元素的指针。a[5]是距,与相同的5个元素的值,从小学数学我们知道它们是相等的(加法是可交换的)。a*(a + 5)
问题来源于stack overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。