一维数组在内存中的存储是连续存放的。
计算机处理数据时,都要经过内存进行处理,而内存会被划分成一个个单元,每个内存单元都会编号,而这些编号也可以把他们看作为地址。
我们可以用将数组中的地址都打印出来
#include<stdio.h>
int main(){
int arr[5]={0};
int a=0;//依旧可以用下标的方法打印数组的地址,只是打印的不是元素而是地址
for(a=0;a<5;a++)
{printf("%p",&arr[a]);}//将数组中所有地址打印出来 “%p”是用来打印地址的“&”是取地址符号
return 0;
}
从结果中我们会发现
它们之间都是相差4,可以说明数组的元素在内存中是连续存放的
而连续的内存为指针(通过指针来访问数组元素)和内存处理(整块内存的复制和写入等)提供了便利,这使得数组可以作为缓存(临时存储数据的一块内存)使用。
如果我们将打印的函数换成printf("arr[%d]=%p",a,&arr[a])我们将发现
#include<stdio.h>
int main(){
int arr[5]={0};
int a=0;
for(a=0;a<5;a++)
{printf("arr[%d]=%p\n",a,&arr[a]);}//都是一样的,只是为了好看将arr[a]大印出来
return 0;
结果:
我们会发现随着下标的增加,地址逐渐变大。
注意(每次打印的地址是不一样的!)