#include <stdio.h>
int main()
{
int arr[5]={1,2,3,4,5};
printf("%p\n",arr);//数组名也是数组中首元素地址,取首元素地址
printf("%p\n",&arr[0]);//取首元素地址
printf("%d\n",*arr);//打印出来结果为1,说明我们数组名解引用出来是首元素
int sz=sizeof(arr)/sizeof(arr[0]);
//下面两种arr是特例:
printf("%d\n",sz);//此时结果为4,表示数组的大小,arr放在sizeof中表示的是整个数组,而不是首元素
printf("%p\n",&arr);//不是首元素地址,这种取出的是整个数组的地址
printf("%p\n",arr+1);//是首元素+1后下一个元素地址,所以地址差4
printf("%p\n",&arr+1);//是整个数组+1,所以结果中地址差20
return 0;
}
结果为:
0x7ffeedfe00c0
0x7ffeedfe00c0
1
5
0x7ffeedfe00c0
0x7ffeedfe00c4
0x7ffeedfe00d4