1

GCC コンパイラで Ubuntu 12.04lts を使用しています。このプログラムの結果は 10 です。このプログラムの結果がこのような結果になる理由を説明していただけますか?

 #include <stdio.h>
 void main(void)
 {
     int arr[1] = {10};
     printf("\n%d\n\n", 0[arr]);
 }
4

2 に答える 2

5

arr[0]に内部展開され*(arr+0)ます。同様に、同じものを指している に0[arr]展開されます。*(0+arr)したがって、10 と表示されます。

一般に、配列またはポインターaの場合、 はa[b]常に、 が配列またはポインターの開始アドレスであり、がオフセット*(a+b)であることを意味します。したがって、とは等価です。aba[b]b[a]

于 2013-10-19T18:13:49.193 に答える