数组概述
数组是存储相同数据类型元素的有限集合,具有以下特性:
- 元素类型相同
- 元素数量固定
数组分类
数组定义
int arr[5]; // 一维整型数组
int matrix[3][5]; // 二维整型数组
char str[5]; // 一维字符数组
char strs[3][5]; // 二维字符数组
int multi[1][2][3][4]; // 多维数组
定义语法
数据类型 数组名[元素个数];
- 数据类型:必须是基础数据类型(不包括void)
- 数组名:遵循标识符命名规则(字母、数字、下划线,不能以数字开头)
- 元素个数:常量或常量表达式(GNU gcc允许变量)
数组元素访问
- 下标范围:0 到 元素个数-1
- 下标可以是常量、变量或表达式
- 禁止越界访问
- 数组不能整体操作(不能整体打印或输入)
- 使用[]下标运算符访问元素
数组初始化
int arr[5]; // 声明未初始化
arr[0] = 1; // 逐个初始化(常量下标)
arr[1] += 10; // 读取并修改(常量下标)
arr[c+1] += 10; // 表达式下标
arr[c] += 10; // 变量下标
// 完全初始化
int arr1[5] = {1,2,3,4,5};
// 部分初始化(剩余元素自动补0)
int arr2[5] = {1,2,3};
// 全零初始化
int arr3[5] = {0};
// 自动推断大小
int arr4[] = {1,2,3,4,5}; // 自动确定为5个元素
数组存储特性
- 单一性:元素类型相同
- 连续性:内存空间连续分配
- 有序性:元素按顺序存储
- 内存计算:数组总大小 = sizeof(基类型) × 元素个数
数组遍历
使用循环结构依次访问每个元素
int arr[3] = {0};
int len = sizeof(arr) / sizeof(arr[0]); // 获取数组长度
for (int i = 0; i < len; i++) {
printf("arr[%d] = %d\\n", i, arr[i]);
}
