一、一维数组

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;
}

运行结果

123
456