C反转索引器和数组名称

参见英文答案 > With arrays,why is it the case that a[5] == 5[a]?15个
我在网路上遇到过,想知道有人能够解释一下,至少给我一个可能的名字,以至于我至少知道我在搜索什么.
int main()
{
   int myarray[4] = {0,100,200,300};
   2[myarray] = -999;  //why does this work? what is this called?

   for ( int i = 0; i < 4; i++) 
      cout << myarray[i] << endl;
}

输出为0,-999,300

我跑了我知道它是有效的,但为什么?这个叫什么?

解决方法

这是因为arr [n] == *(arr n).

但是,由于加法是可交换的,*(arr n)== *(n arr).因此,*(n arr)== n [arr] == *(arr n)== arr [n].

值得一提的是,*(arr n)仍然有点误导.在汇编中它实际上意味着*(arr(n * s))其中s是sizeof arr [0],但这是在封面下,所以你不需要担心.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...