我们先看一下这一行代码:
显而易见,这是一个(int)整数型的数组,里面有5个成员。我们尝试通过以下代码打印出它们各个成员的指针地址:
#include<stdio.h>
int main(void) {
int sum[] = {1,2,3,4,5};
for (int i = 0; i < 5; i++) {
printf("\n%d---->地址:%p",sum[i],&sum[i]); // &sum[i]取成员地址
}
return 0;
}
运行之后得到以下结果:
我们发现它们各个成员在内存中的地址都相差4,为什么是相差4?
因为这是int类型的数组,int类型占4个字节的空间,所以它们的每个成员地址之间也是相差4
如果我们把int换成short会怎么样?
#include<stdio.h>
int main(void) {
short sum[] = {1,2,3,4,5};
for (int i = 0; i < 5; i++) {
printf("\n%d---->地址:%p",sum[i],&sum[i]); // &sum[i]取成员地址
}
return 0;
}
代码运行之后得到以下结果:
经过对比发现,数组成员之间的差变成了2,为什么呢?显然已经,因为我们修改了数组的数据类型。char类型在内存中占2个字节的空间,int类型占4个字节的空间。
因此我们可以得到一个结论:当声明数组时,使用什么数据类型来声明,相邻的数组成员之间的地址差等于此数据类型所占内存的字节数。