先看一段代码:
#include
<
stdio.h
>
void
main()

...
{

int a[5]=...{1,2,3,4,5};
int *p;
p=(int *)(&a+1);
printf("%d",*(p-1));
}










输出的结果是5而不是1.
a和a[0]的地址虽然是一样的,但是a代表的是数组指针,a[0]代表的是整型指针,所以a+1和a[0]+1代表的地址是不一样的.a+1向前前进了20个字节,而a[0]+1只前进4个字节.
这样再看下例子,是不是很好理解了呢?