文章目录
1. 数组的基本概念
- 线性表结构:元素按顺序排列
- 连续内存分配:元素存储在连续内存空间
- 随机访问:通过索引直接访问元素(时间复杂度O(1))
- 固定类型:所有元素类型相同
数学表达式表示为:
A = [a₀, a₁, a₂, …, aₙ₋₁],其中n为数组长度
2. C语言中的数组实现
2.1 静态数组
定义与声明:
// 声明整型数组(未初始化)
int arr[10];
// 声明并初始化
float temperatures[5] = {
36.5, 37.0, 36.8};
内存布局:
| 元素0 | 元素1 | 元素2 | ... | 元素n-1 |
地址计算:
元素地址 = 基地址 + 索引 × sizeof(type)
边界检查:
C语言不提供内置的边界检查,需要开发者自行处理
2.2 动态数组
结构体定义:
typedef struct {
int* data; // 数据存储指针
size_t size; // 当前元素数量
size_t capacity;// 总容量
} DynamicArray;
初始化函数:
DynamicArray* da_init(size_t initial_capacity) {
DynamicArray* da = malloc(sizeof(DynamicArray));
da