1.数组的地址和数组首元素的地址是一样的。既然地址都是一样为什么还会有这样的问题呢?
数组的地址指向的内存空间的类型是数组类型
数组首元素的地址指向的内存空间的类型是首元素的类型
int main()
{
int a[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
//&a地址获得的是数组这个变量的首地址,而a是数组第一个元素的地址
printf("a[0]的地址%d ; a的地址%d ; a+1后的地址%d ; &a+1后的地址%d\n",a,&a,a+1,&a+1);
printf("a[0]的值是:%d\n",*a);
printf("a的值是:%d\n",*&a);
printf("a[0]的值是:%d\n",**&a);
system("pause");
}
a指的是数组的首元素的地址,&a代表的是数组的地址。
所以a+1-a=4;&a+1-&a=40;
2.数组做函数参数参数是有所退化的,退化为一个指针。
数组实际上是在栈上开辟了一段连续内存空间;指针是一个指向某一个内存地址;所以当然