先看一段代码:
#include<stdio.h>
int main()
{
long int a[2]={0};
printf("%d,%d",&a[0],&a[1]);
return 0;
}
上面输出为a[0]和a[1]两个地址的值,输出结果两者地址值大小相差8,且数组地址分配由低地址到高地址,即a[0]地址低于a[1]地址;当long int改成int,两者地址值大小相差4,由此可见,数组的内存地址连续分配与数据类型有关,可以理解成地址大小相差1,对应的就是数据大小占1字节。