先贴代码
#include <stdio.h> int main(void)
{
double a[]={1.1,2.2,3.3};
unsigned int b,c,d;
b=&a[]+;c=&a[];d=&a[];
printf("diff -- %d", c-b);
return ;
}
执行结果是
diff --
这是32位的代码,所以可以用unsigned int类型来储存地址位。
由于a[0]是double类型,所以&a[0]+1的返回值是a[0]的地址向后移sizeof(double)个字节。
这样就导致了 &a[]+ == a+ == &a[] == (void *)a[]+ 的结果。