2015-04-14 113 views
-1

我遇到了今天访问数组元素的另一种方法。我只是好奇,如果它正确的方式来访问数组元素。访问C中的数组元素

这里是我的代码,

#include <stdio.h> 

int main(int argc, char* argv[]) 
{ 
    int arr[4] = {4, 5, 6, 7}; 
    printf ("---> %d \n", 2[arr]); 
    return 0; 
} 

以下为输出,

---> 6 

我想程序将无法编译,但不是没有!我试图在Linux和Windows上编译它,它在两者上都能正常工作。专家对此有何看法?

+1

'2 [arr] == arr [0123]' –

+2

'因为'*(arr + i)== *(i + arr)''我[arr] == arr [i]'。 – Maroun

+1

[数组下标在C中是可交换的](http://c-faq.com/aryptr/joke.html) –

回答

3

这工作,因为该表达式a[b]相当于*(a + b),这意味着你可以交换的ab的顺序,除了不关心。