我正在使用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)
arr[0]内部扩展到*(arr+0).同样地0[arr],扩展到*(0+arr)哪个指向同一个东西.因此,你看到10.
通常,对于数组或指针a,a[b]始终表示数组或指针的起始地址*(a+b)在哪里a,并且b是偏移量.因此,a[b]并且b[a]是等价的.