一、一维数组
1. 本质
内存中连续排列、同一类型的数据集合
2. 声明与初始化:先定义后赋值
法1:先声明后逐个赋值
int a[3];
a[1]=1;
a[2]=2;
a[3]=3;
法2:同时
int a[3]={1,2,3};
法3:未赋值的自动补0
int a[6]={1,2,3}; //实际数组为{1,2,3,0,0,0}
法4:编译器自动计算数组长度
int a[]={1,2,3};
3. 数组的下标和访问
- ①下标:C语言下标从0开始算
- ②访问:避免数组越界
4. 遍历数组:for循环批量处理
e.g. 求和
#include <stdio.h>
int main() {
int a[5] = {1, 2, 3, 4, 5};
int sum = 0;
// 用 for 循环遍历每一个下标 0 ~ 4
for (int i = 0; i < 5; i++) {
sum += a[i]; // 相当于 sum = sum + a[i]
}
printf("总和是:%d\n", sum); // "\n"为换行符
return 0;
}
二、二维数组
1. 例子
int a [ 3 ] [ 5 ] 可理解为 a 是一个 3 行 5 列的矩阵
2. 声明与初始化
// 定义一个 2 行 3 列的矩阵
int matrix[2][3] = {
{1, 2, 3}, // 第 0 行
{4, 5, 6} // 第 1 行
};
/* 访问第 1 行第 2 列的元素(注意下标从 0 开始)
e.g. 第0行第0列:1 */
printf("%d", matrix[1][2]); // 输出 6
3. 遍历二维数组:两层for循环嵌套
- 外层:控制行:从第 0 行走到最后一行
- 内层:控制列:在当前行内,从第 0 列走到最后一列
#include <stdio.h>
int main() {
// 定义一个 2 行 3 列的二维数组
int matrix[2][3] = {
{1, 2, 3},
{4, 5, 6}
};
// 外层循环:i 代表行号(0 到 1)
for (int i = 0; i < 2; i++) {
// 内层循环:j 代表列号(0 到 2)
for (int j = 0; j < 3; j++) {
printf("%d ", matrix[i][j]); // 打印当前位置的元素
}
printf("\n"); // 一行打印完了,换行
}
return 0;
}
运行结果
| 1 | 2 | 3 |
|---|---|---|
| 4 | 5 | 6 |