C 语言数组内存布局与访问方式
在 C 语言中,数组是最基础也最重要的数据结构之一。理解它的内存布局,对于掌握指针、优化性能以及避免内存错误至关重要。
一维数组的连续存储
数组元素在内存中是连续存放的。这意味着第一个元素位于最低地址,后续元素依次递增。每个元素占用相同大小的空间。
#include <stdio.h>
int main() {
int arr[5] = {1, 2, 3, 4, 5};
printf("数组第一个元素的地址:%p\n", &arr[0]);
printf("数组第二个元素的地址:%p\n", &arr[1]);
printf("数组第三个元素的地址:%p\n", &arr[2]);
return 0;
}
运行这段代码,你会发现地址是依次递增的。因为 int 类型通常占用 4 字节,所以相邻元素的地址差就是 4。这种连续性使得我们可以通过简单的算术运算来定位任意元素。
多维数组的内存结构
二维数组可以看作是一维数组的嵌套。虽然逻辑上是行和列,但在物理内存上,它依然是按行优先顺序连续存储的。
#include <stdio.h>
int main() {
int arr[2][3] = {{1, 2, 3}, {4, 5, }};
(, arr);
(, arr[]);
(, arr[]);
;
}


