测试代码如下
#include<stdio.h>
int main()
{
int a[10]={1,2,3,4,5,7,9,8,10,6};
int *p=a;
printf("%p\t",a);
printf("%p\t",&a);
printf("%p\t",&a+1);
return 0;
}
很明显:数组名a代表的是数组的首地址,&a虽然和a的地址相同,但是还是有不同的地方。
由于数组和指针的关系,数组a是一个指针,并且它指向数组的第一个元素,
a和&a不同的地方的是&a是代表整个数组,a只是一个指针指向第一个元素而已。
&a+1是把数组a当成一个整体然后加1,所以结果就等于数组中的最后一个元素。
自己动手敲一遍能够更好的帮助理解。
新手勿喷,发表自己的看法而已!!!