数组名是什么?
#include <stdio.h>
int main()
{
int arr[]={1,2,3,4,5,6,7};
printf("%p\n",arr);
printf("%p\n",&arr[0]);
printf("%d\n",*arr);
}
我们打印分别打印arr,&arr[0]的地址,再打印解引用*arr的值。
结论:数组名就是数组第一个元素的地址(有两个例外)
1:sizeof(数组名),计算整个数组的大小,在sizeof内单独放一个数组名表示整个数组
#include <stdio.h>
int main()
{
int arr[]={1,2,3,4,5,6,7};
int sz = sizeof(arr)/sizeof(arr[0]);
printf("%d\n",sz);
}
此时若arr表示数组首元素的地址,那么结果sz应该等于4/4=1.
可见此处arr在sizeof内代表整个数组用于被计算数组大小
2:&arr,表示取整个数组的地址,