2015-04-14 3 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 [2]' –

+2

'i [arr] == arr [i]' потому что '* (arr + i) == * (i + arr)'. – Maroun

+1

[Арифметика Array является коммутативной в C] (http://c-faq.com/aryptr/joke.html) –

ответ

3

Это работает, потому что для выражения a[b] эквивалентно *(a + b), что означает, что вы можете поменять порядок a и b, добавление не заботится.

Смежные вопросы