C中的这个数组程序如何给出结果10?

thi*_*mar 1 c arrays

我正在使用Ubuntu 12.04lts与GCC编译器.这个程序给出了结果10.你有没有人可以描述为什么这个程序会给出这样的结果?

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

Kun*_*nal 5

arr[0]内部扩展到*(arr+0).同样地0[arr],扩展到*(0+arr)哪个指向同一个东西.因此,你看到10.

通常,对于数组或指针a,a[b]始终表示数组或指针的起始地址*(a+b)在哪里a,并且b是偏移量.因此,a[b]并且b[a]是等价的.