代码之家  ›  专栏  ›  技术社区  ›  Cheok Yan Cheng

为什么我可以对非数组[duplicate]应用数组下标访问语法

c++
  •  1
  • Cheok Yan Cheng  · 技术社区  · 14 年前

    可能重复:
    In C arrays why is this true? a[5] == 5[a]

    int i = 0;
    
    int *j = 0;
    int k = 0;
    
    i[j];    // OK?!?!
    i[k];    // Compile Error.
    

    我在想,这是什么意思 i[j]

    2 回复  |  直到 7 年前
        1
  •  4
  •   Luca Matteis    14 年前

    i[j] 等于 j[i]

    所以它在做 *(j + i) 这实际上是有效的,因为 j 是指针。

    这不适用于 k 因为它不是指针。

        2
  •  2
  •   Dewfy    14 年前

    但是i[k]-不能被取消引用,这就是为什么它是一个错误。