#include "stdio.h"
void main(void)
{
int i;
int a[10];
printf("a= %d\n",a);
printf("&a= %d\n",&a);
printf("a+1= %d\n",a+1);
printf("&a+1=%d\n",&a+1);
printf("sizeof(a)=%d\n",sizeof(a));
printf("sizeof(&a)=%d\n",sizeof(&a));
}
a只是a[0]的地址,a+1就是a[1]的地址了,而&a是整个a[10]的首地址,是以整个数组为角度来看,虽然它与a[0]的值相同,但是&a+1就已经增加了10个int类型的字节的长度了。
上述代码编译运行后的结果如下:
不同的编译器sizeof还有点不同,上述是VC++的编译结果。
如果在linux g++下编译则结果如下:
a= -1081932712
&a= -1081932712
a+1= -1081932708
&a+1=-1081932672
sizeof(a)=40
sizeof(&a)=4
sizeof使用为什么有这个区别,我还需要深入理解......