考察 a和&a的区别。
//代码如下
#include<stdio.h>
void main( )
{
int a[6]={1,2,3,4,5,6};
int *p=&a+1;
printf("%d,%d\n",*(a+1),*(p-1));
}
输出结果:2,6。
为什么呢?
因为数组名a是数组的首地址,即a为&a[0],而&a是数组的指针。当 “int *p=&a+1;”时,p指向数组a的下一个数组,我们不知道;执行“ *(p-1)”时候,p-1即是a[6]地址,即(p-1)=&a[6];所以结果为6。