【问题标题】:Arrays and using the array as a index [duplicate]数组并使用数组作为索引[重复]
【发布时间】:2017-05-08 22:19:28
【问题描述】:

通常在 C++ 中,当遍历一个数组时,你会向上计数并使用索引。但是,我想知道为什么使用数组作为索引也可以。 例如,

#include <iostream>
using namespace std;

int main() {
    int a[] = {5,7,3,2,0};
    int i = 0;
    for(i = 0; i <5; i++)
    {
        cout<<i[a]<<"\n";
    }
    return 0;
}

输出将与使用 a[i] 相同。这是为什么呢?

【问题讨论】:

  • 对于内置类型,X[Y] 表示 *(X+Y)+ 是可交换的

标签: c++ arrays indexing


【解决方案1】:

在 C++ 中,[] 运算符实际上相当于地址加法。

所以当你写的时候: 一个[我]

编译器看到: *(a + i)

反之,当你写 i[a] 时,编译器会看到:*(i + a)。

【讨论】:

  • 不,数组不是指针。
  • 它是指向其第一个元素的指针。
  • 当数组越过某些边界时,数组可以衰减到指向第一个元素的指针。但就其本身而言,它仍然是一个数组,而不是一个指针。
  • 还是错了。试试sizeof(a)sizeof(int*)
猜你喜欢
  • 1970-01-01
  • 2021-12-25
  • 1970-01-01
  • 2010-10-28
  • 1970-01-01
  • 2017-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多