📅  最后修改于: 2023-12-03 15:06:16.888000             🧑  作者: Mango
在C/C++中,数组是一个非常基础的数据结构。在使用数组时,有时候会出现比较奇怪的语法,比如 a[i] == i[a]
,这个语法是什么意思?为什么它是合法的?本文将向您解释这个问题。
首先让我们看一下这个语法的起源。在C/C++中,使用下标访问数组元素的语法是 array[index]
,这个语法与指针语法 *(array + index)
是等价的。
因此,可以将 a[i]
翻译成 *(a + i)
,将 i[a]
翻译成 *(i + a)
。我们发现,*(a + i)
和 *(i + a)
是完全等价的,因为加法是可交换的。因此,a[i] == i[a]
是一个合法的表达式,它的值是 true。
那么这个特性有什么作用呢?其实,这个特性并没有什么实际的用处,只是有时候可以让代码看起来更简洁。比如下面的代码:
int a[10];
for (int i = 0; i < 10; i++) {
a[i] = i;
}
可以改写成:
int a[10];
for (int i = 0; i < 10; i++) {
i[a] = i;
}
两段代码的作用完全相同,只是语法不同。但是,第二段代码有时候可能会让阅读者感到困惑,因此并不推荐使用。
总结起来,a[i] == i[a]
这个特性只是一个有趣的语法现象,它的存在并没有什么实际的作用。在实际编程中,请使用标准的数组访问语法,即 array[index]
。