1.数组名表示整个数组的大小
代表整个数组时只能做右值,不能做左值
void main()
{
int arr[10]={}; //初始化一个数组
int size=sizeof(arr);//此时arr代表整个数组
}
2.数组名表示数组首元素的地址
代表数字元素的地址时也只能做右值
void main()
{
int arr[10]={}; //初始化一个数组
int* i_ptr0=arr;//此时arr表示arr[0]地址
//上述等价与下式
int* i_ptr1=&arr[0];
}
3.代表整个数组的地址
代表整个数组的地址时值和arr[0]的地址的值相同,但是表达的含义不同
void main()
{
int arr[10]={}; //初始化一个数组
int (*a_ptr)[10]=&arr;//此时arr表示整个数组的值;
int *i_ptr=arr;//此时arr表示数组首地址;
//下面两行打印出相同的值;
printf("&arr=%p",&arr);
pritnf("arr=%p",arr);
//下面两行打印出不同的值
printf("&arr+1=%p",&arr+1); //此时的值为arr+sizeof(arr);
printf("&arr[1]=%p",i_ptr+1);//此时的值为arr+sizeof(int);
}