学科分类
目录
C语言

数组的步长

定义一个数组,示例代码如下:

int arr[5] = { 1,2,3,4,5 };

上述代码定义了一个大小为5的int类型数组,通过索引访问数组元素时,由arr[0]到arr[1],索引的值增加了1,但在内存中,由第1个元素到第2个元素,内存地址并不是增加了1个字节,而是增加了4个字节。使用printf()函数输出各元素地址,可以观察各元素地址的变化,具体如例1所示。

例1 stepSize.c

 1  #include <stdio.h>
 2  int main()
 3  {
 4    int arr[5] = { 1,2,3,4,5 };   //int类型的数组arr,其大小为5
 5    for (int i = 0; i < 5; i++)
 6      printf("arr[%d]:%p\n", i, &arr[i]);
 7    return 0;
 8  }

例1运行结果如图1所示。

图1 例1运行结果

由图1可知,数组arr首元素地址为0022FD50,后面四个元素的地址依次递增4(字节)。这表明相邻元素间的地址距离为4字节。4字节就是数组arr各元素之间的内存地址距离,也称为数组arr的步长。

数组步长就是相邻数组元素之间的内存地址距离,由数组类型决定。char类型的数组,由当前元素到下一个元素,跨越了1个字节内存,步长为1字节; double类型的数组,由当前元素到下一个元素,跨越了8个字节内存,步长为8字节。

img小提示:内存地址打印

程序运行结束后,变量所占内存空间会被回收,下一次程序运行时,系统会重新随机分配内存,因此每次运行程序打印的地址一般不会相同。

点击此处
隐藏目录