c - 对于数组,为什么会出现a [5] == 5 [a]?

标签 c arrays pointers pointer-arithmetic

正如Joel在Stack Overflow podcast #34C Programming Language(又名:K&R)中指出的那样,在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]是与a相同的,距*(a + 5) 5个元素的值,从小学数学我们知道它们是相等的(加法为commutative)。

关于c - 对于数组,为什么会出现a [5] == 5 [a]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54380287/

相关文章:

javascript - 当 JavaScript 中的 forEach 或循环提供值时,条件执行

c++ - 指针和带指针的结构

c - 使用 AVR Studio 6 编译 Procyon 库时出错

python - 选择 numpy 数组,使最后一个元素为 1

java - 提示数独谜题的单个值

c - C 中指针的声明和初始化

c - 与正常函数调用相比仍然没有得到回调

c - C 结构体的读写

c - 将文本文件的第一个和第二个单词存储到两个数组中的最佳方法

c++ - 散落着断言的代码