数组
数组是一组相同类型元素的连续存储结构。它通过下标访问元素,是 C 语言中最基础的数据结构之一。
一、特点
- 内存连续;
- 元素类型相同;
- 下标从 0 开始;
- 随机访问速度快;
- 插入和删除中间元素成本较高。
二、基本定义
int nums[5] = {1, 2, 3, 4, 5};
访问元素:
printf("%d\n", nums[0]);
nums[2] = 10;
三、复杂度
| 操作 | 复杂度 |
|---|---|
| 按下标访问 | O(1) |
| 遍历 | O(n) |
| 查找指定值 | O(n) |
| 中间插入 | O(n) |
| 中间删除 | O(n) |
四、多维数组
int matrix[2][3] = {
{1, 2, 3},
{4, 5, 6}
};
二维数组在内存中仍然是连续存储的,只是通过行和列进行访问。
五、常见问题
- 数组越界会导致未定义行为。
- 数组名在多数表达式中会退化为指针。
- 函数参数中的数组长度需要额外传入。
- 大数组不要随意放在栈上,可能导致栈溢出。
六、练习
- 求数组最大值和最小值。
- 反转数组。
- 删除指定位置元素。
- 合并两个有序数组。
- 使用二维数组表示棋盘。