#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>
int main()
{int arr[]={1,2,3,4};printf("%p\n",arr);printf("%p\n",&arr);printf("%p\n",*arr);return 0;
}
结论:数组名是数组首元素地址(下标为0的元素是首元素)
例外:
1、sizeof(数组名),该数组数组名表示整个数组,sizeof计算数组大小,单位字节
#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>
int main()
{int arr[10]={0};printf("%d\n",sizeof(arr));return 0;
}
2、&(数组名),数组名代表整个数组,取出的是整个数组的地址
#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>
int main()
{int arr[]={1,2,3,4};printf("%p\n",arr);printf("%p\n",&arr[0]);printf("%p\n",&arr);return 0;
}
输出的结果是一样的,但是&(arr)的地址代表的是从第一个数组元素开始,分别+1发现输出结果不通,因为&arr+1输出的是数组的地址,而其他输出的是数组中首元素+1的元素地址(第二个元素地址)
#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>
int main()
{int arr[]={1,2,3,4};printf("%p\n",arr);printf("%p\n",arr+1);printf("\n");printf("%p\n",&arr[0]);printf("%p\n",&arr[0]+1);printf("\n");printf("%p\n",&arr);printf("%p\n",&arr+1);return 0;
}