【发布时间】:2021-01-27 23:56:48
【问题描述】:
我在任何其他编程语言中都没有遇到过类似的表示法,也就是说,我习惯于在括号内看到下标(而不是相反)。我了解如何给定数组foo,foo 本质上是指向数组基地址的指针;以及指针符号如何与数组符号相关,即我明白为什么foo[i], *(foo + i), *(i + foo) 都是等价的背后的基本原理......但我不明白i[foo] 背后的基本原理如何也等同于上述三个,或者它如何作品。也许用英语改写这个符号会有所帮助,但我不知道该怎么做。
【问题讨论】:
-
问问自己,“
7[arrayname]有什么可能的替代含义?” K&R,决定它没有任何区别,所以不妨让它成为社区。span> -
我认为它在 K&R 书中有所解释 - a[b] 只是 *(a+b) 的 语法糖,它显然是可交换的。
-
@computronium 不是任意的,它在资源中进行了解释。
a[i]是*(a+i)是*(i+a)是i[a]。
标签: c pointers multidimensional-array implicit-conversion c-strings