2013-04-18 73 views
-1

我想知道爲什麼這段代碼正在運行。char指針奇怪的表達式c

代碼:

#include <stdio.h> 

int main(int argc, char* argv[]) 
{ 
     char* c = "1234567"; 
     printf("%c\n", 5[c]); 

     return 0; 
} 

結果:

回答

4

如果你感到困惑與a[b]語法,那麼就刷新你的C知識。

a[b]被定義爲*(a + b)並且由於a+b相同b+a,所以是a[b]b[a]

+0

感謝您的快速回復。 – ExtremeBlue 2013-04-18 06:01:25

0

在C語言中,數組索引的工作方式如下,例如[i]它實際上被編譯器解釋爲*(a + i),所以它可以寫成*(i + a),因爲加法是可交換的。 因此a [i] == i [a]。