跳到主要内容

数组

数组是一组相同类型元素的连续存储结构。它通过下标访问元素,是 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}
};

二维数组在内存中仍然是连续存储的,只是通过行和列进行访问。

五、常见问题

  • 数组越界会导致未定义行为。
  • 数组名在多数表达式中会退化为指针。
  • 函数参数中的数组长度需要额外传入。
  • 大数组不要随意放在栈上,可能导致栈溢出。

六、练习

  • 求数组最大值和最小值。
  • 反转数组。
  • 删除指定位置元素。
  • 合并两个有序数组。
  • 使用二维数组表示棋盘。