-1
我想知道爲什麼這段代碼正在運行。char指針奇怪的表達式c
代碼:
#include <stdio.h>
int main(int argc, char* argv[])
{
char* c = "1234567";
printf("%c\n", 5[c]);
return 0;
}
結果:
我想知道爲什麼這段代碼正在運行。char指針奇怪的表達式c
代碼:
#include <stdio.h>
int main(int argc, char* argv[])
{
char* c = "1234567";
printf("%c\n", 5[c]);
return 0;
}
結果:
如果你感到困惑與a[b]
語法,那麼就刷新你的C知識。
a[b]
被定義爲*(a + b)
並且由於a+b
相同b+a
,所以是a[b]
和b[a]
。
在C語言中,數組索引的工作方式如下,例如[i]它實際上被編譯器解釋爲*(a + i),所以它可以寫成*(i + a),因爲加法是可交換的。 因此a [i] == i [a]。
感謝您的快速回復。 – ExtremeBlue 2013-04-18 06:01:25