可能重複:
In C arrays why is this true? a[5] == 5[a]在C編程語言中:A [i]和i [A]都指向數組A的第i個元素。爲什麼?
雖然用C編碼,我意外發現,下面的代碼正確打印陣列A的元素:
int A[] = {10, 20, 5, 32, 40};
for(int i=0; i<5; i++)
printf("%d \n", i[A]);
所以i[A]
行爲像A[i]
。
爲什麼?這種行爲背後的邏輯是什麼?
可能重複:
In C arrays why is this true? a[5] == 5[a]在C編程語言中:A [i]和i [A]都指向數組A的第i個元素。爲什麼?
雖然用C編碼,我意外發現,下面的代碼正確打印陣列A的元素:
int A[] = {10, 20, 5, 32, 40};
for(int i=0; i<5; i++)
printf("%d \n", i[A]);
所以i[A]
行爲像A[i]
。
爲什麼?這種行爲背後的邏輯是什麼?
因爲在C下標操作中指針運算來定義的,見
(C99,6.5.2.1p2)「下標操作符[]的定義是,E1 [E2]是相同到(*((E1)+(E2)))「。
這是另外的可交換性:
*(A+i) same as *(i+A)