C语言核心概念详解:continue、数组与二维数组

71 阅读3分钟

一、continue语句:循环的"快进键"

continue的作用是:跳过当前循环中剩余的代码,直接进入下一次循环。它就像一个"快进"按钮,让你忽略本次循环的下半部分,直接开始下一轮的循环。

实际应用示例

#include <stdio.h>

int main() {
    int i;
    for(i = 1; i <= 100; i++) {
        if(i % 3 == 0) {
            continue;  // 遇到3的倍数就跳过打印
        }
        printf("%d\n", i);
    }
    return 0;
}

这段代码会跳过所有能被3整除的数字,只打印其他数字。

二、数组:数据的集装箱

数组基础概念

  • 数组元素:组成数组的各个变量
  • 数据类型:数组中各元素的数据类型必须相同
  • 内存排列:元素在内存中是连续依次排列的
  • 构造类型:数组是构造数据类型之一

定义数组的三要素

定义数组时需要说明:类型、名字、大小

int odd[5];  // 类型:int, 名字:odd, 大小:5

数组初始化与遍历

#include <stdio.h>

int main() {
    int a[5] = {1, 2, 3, 4, 5};  // 初始化数组
    
    for(int i = 0; i < 5; i++) {
        printf("%d\n", a[i]);  // 遍历数组
    }
    return 0;
}

智能遍历技巧

在不清楚数组大小时,可以使用sizeof来计算元素个数:

#include <stdio.h>

int main() {
    int a[5] = {5, 1, 4, 9, 12};
    int i;
    
    for(i = 0; i < sizeof(a) / sizeof(a[0]); i++) {
        printf("%d %p\n", a[i], &a[i]);
    }
    return 0;
}

优势:即使改变数组类型,代码也无需修改!

三、数组实战:找出最大值

#include <stdio.h>

int main() {
    int a[10];  // 声明一个可以存放10个整数的数组
    int i;
    
    // 获取用户输入
    for(i = 0; i <= 9; i++) {
        scanf("%d", &a[i]);
    }
    
    // "打擂台"算法找最大值
    int max = a[0];  // 假设第一个元素是最大值
    
    for(i = 0; i <= 9; i++) {
        if(max < a[i]) {   // 如果有人比当前"擂主"更厉害
            max = a[i];    // 更新擂主
        }
    }
    
    printf("最大值是:%d\n", max);
    return 0;
}

四、数组越界:必须警惕的危险行为

什么是数组越界?

数组越界就是访问了不属于数组的内存位置,就像坐公交车时坐到了别人的座位上。

越界的危害

  • 数据混乱:多出来的数据会覆盖其他变量的值
  • 程序崩溃:可能导致程序突然停止运行
  • 安全风险:可能被黑客利用来攻击程序

示例

#include <stdio.h>

int main() {
    int arr[10];  // 声明一个能装10个数的数组

    // 合法的操作:
    arr[0] = 1;   // ✓ 第1个位置
    arr[9] = 10;  // ✓ 第10个位置  

    // 数组越界:
    arr[10] = 11; // ✗ 第11个位置 - 越界!
    arr[15] = 20; // ✗ 第16个位置 - 越界!
    
    return 0;
}

五、二维数组:数据的表格世界

定义与初始化

#include <stdio.h>

int main() {
    // 定义方式:数据类型 数组名[行数][列数]
    int grades[5][3] = {
        {85, 90, 78},  // 学生1的语数外成绩
        {92, 88, 95},  // 学生2
        {76, 85, 80},  // 学生3
        {88, 92, 85},  // 学生4
        {95, 87, 90}   // 学生5
    };
    
    return 0;
}

遍历二维数组

#include <stdio.h>

int main() {
    int grades[5][3] = {
        {85, 90, 78},  
        {92, 88, 95},  
        {76, 85, 80},  
        {88, 92, 85},  
        {95, 87, 90}   
    };
    
    for (int i = 0; i < 5; i++) {
        for (int j = 0; j < 3; j++) {
            printf("%d  ", grades[i][j]);
        }
        printf("\n");
    }
    return 0;
}

总结

通过本文,我们学习了:

  1. continue语句的"快进"作用
  2. 数组的基础操作和遍历技巧
  3. 数组越界的危害及避免方法
  4. 二维数组的表格化数据处理