1.数组名的理解
以前我们在使用指针访问数组内容时,有这样的代码:
#include <stdio.h>
int main()
{
int arr[10] = {
1,2,3,4,5,6,7,8,9,10 };
int* p = &arr[0];
}
这里我们使用 &arr[0] 的方式拿到了数组第一个元素的地址,但是数组名本身就是首元素地址,我们来进行测试:
#include <stdio.h>
int main()
{
int arr[10] = {
1,2,3,4,5,6,7,8,9,10 };
printf("&arr[0] = %p\n", &arr[0]);
printf("arr = %p\n", arr);
return 0;
}
输出结果:
我们发现数组名和数组首元素的地址打印出来一模一样,数组名就是数组首元素(第一个元素)的地址。
那么下面的代码会让大家产生疑惑:
#include <stdio.h>
int main()
{
int arr[10] = {
1,2,