首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么对于每个数组a和整数j,a[j]等于j[a]?

为什么对于每个数组a和整数j,a[j]等于j[a]?
EN

Stack Overflow用户
提问于 2019-06-01 23:34:06
回答 1查看 125关注 0票数 0

我正在阅读“c++编程语言”中关于指针和数组的部分,我偶然发现了一些令我无法理解的东西。

对于每个内置数组aa范围内的整数j,我们有: a[j] == *(&a[0]+j) == *(a+j) == *(j+a) == j[a]

我理解为什么*(&a[0]+j)的意思与a[j]相同,因为&a[0]指向a的第一个元素,然后由j递增。

我还得到*(a+j)*(j+a)等于a[j],从数组隐式转换为指向a的第一个元素的指针,然后由j递增并取消引用。

但是为什么是a[j] == j[a]呢?我遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-01 23:41:07

因为下标运算符是可交换的。语言只是简单地说明了这一点。

从与指针算术表达式的等价性中可以看出对称性,其中加法运算符也是可交换的:

代码语言:javascript
复制
a[j] == ∗(a+j)
j[a] == ∗(j+a)
∗(a+j) == ∗(j+a)

语言标准(草案)规定:

expr.sub ..。E1E2的表达式(定义上)与*((E1)+(E2))相同. [注意:尽管订阅的外观不对称,但除了顺序之外,订阅是一种交换操作。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56411168

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档