当前位置: 首页 > news >正文

学嵌入式和C语言编程|第七天:循环嵌套、循环辅助语句与数组

前言

今天继续 C 语言基础学习,前面掌握了四种基础循环,现在学习循环嵌套、breakcontinuereturn这些循环辅助关键字,之后进入数组章节。数组在嵌入式开发中使用频率极高,保存传感器批量数据、串口接收缓冲区、表格参数全部都离不开数组,是必须吃透的知识点。

一、循环嵌套

执行流程

外层循环每执行1 次,内层循环完整执行一整轮

举个简单理解:外层循环走一步,内层循环从头到尾跑完一遍。

二、循环辅助语句

关键字

作用说明

重点注意事项

break

循环断路语句,跳出当前这一层循环

多层循环嵌套的时候,仅退出自己所在的那一层循环,不会直接退出全部外层循环

continue

循环短路语句,跳过本次循环剩余代码

本次循环直接结束,直接进入下一轮循环判断,不会终止整个循环

return

跳出当前整个函数

写在 main 主函数内,执行 return,整个程序直接结束运行

小提示:很多新手容易混淆breakcontinue,break 是彻底离开循环;continue 只是跳过这一遍,循环还要继续跑。

三、四大循环回顾(补充 goto)

承接上一天学习内容,完整汇总四种循环

for 循环

c
for(表达式1 ; 表达式2 ; 表达式3)
{
语句(循环体);
}

  • 表达式 1:循环初始条件
  • 表达式 2:循环执行条件,为真执行循环体,为假跳出
  • 表达式 3:促使循环走向结束的条件
  • for(;;)代表死循环;三个表达式语法允许省略,但逻辑条件不能丢;括号后面禁止加分号

while 循环

c
while(表达式)
{
循环体;
}

  • 初始化写在 while 前面;结束变化代码写在循环体内部;
  • while(1)死循环,嵌入式 main 主函数最常用;括号后不要加分号。

do…while 循环

c
do
{
循环体;
}while(表达式);

  • 先执行循环体,再做条件判断;循环体最少执行 1 次
  • while 末尾的分号不能漏掉。

goto 实现循环

c
tag:
业务代码;
if(条件)
goto tag;

  • 依靠自定义标签跳转实现循环,不属于结构化循环;
  • 适合快速跳出多层嵌套循环、异常出错处理;
  • 规范:只做局部使用,禁止跨函数滥用 goto。

四、数组

定义:数组用来保存多个相同数据类型的数据,数组类型不能为void
口诀:高内聚,低耦合

1、数组基础

数组定义格式

c
类型说明符 数组名 [常量];
int a[10];

  • 类型说明符:基础数据类型,决定数组里面存什么类型数据
  • 数组名:数组的名字,命名遵守标识符命名规则
  • [常量]:代表数组里面能够存放元素的总个数
  • 获取数组占用字节:sizeof(a)

数组元素访问

格式:数组名[下标]

  • 下标从0 开始;数组 10 个元素,下标范围:0~9,访问第 10 个元素写a[9]
  • []里面:常量、变量、表达式都可以,运算结果必须是整数
  • ⚠️越界风险:下标从 0 到元素个数‑1,如果超过这个范围,数组访问越界,程序会发生未知错误。

2、数组初始化

数组名代表数组整体类型,不能直接给数组名整体赋值,只能初始化或者逐个元素赋值。

全部初始化

c
int a[10]={1,2,3,4,5,6,7,8,9,0};

所有元素全部给出初始值。

局部初始化

c
int a[10]={1,2,3,4,5};

只写一部分初始数据,没有赋值的元素,系统自动初始化为 0

全部初始化为 0

c
int a[10]={0};

如果完全不初始化:数组内存存放随机杂乱值。

3、数组的存储性质

  1. 连续性:数组在内存中,占用一段连续的内存空间
  2. 单一性:数组内部全部元素,数据类型完全一致。
  3. 有序性:数组元素按下标a[0] ~ a[n‑1]顺序依次存储。

4、数组越界重点

  1. 初始化数据数量 > 数组本身元素个数:发生越界,语法报错。
  2. 访问数组元素,[]里面下标超出合法访问范围,发生数组越界,编译器不一定报错,但是程序运行结果不可预测,嵌入式项目中数组越界是高频 bug 来源。

五、今日学习总结

  1. 循环嵌套记住规则:外层跑一次,内层完整跑一轮;
  2. break退出当前层循环;continue跳过本次循环;return直接退出函数;
  3. 数组下标从 0 开始,总个数 N,下标最大是 N‑1,数组越界是新手高频坑点
  4. 数组局部初始化,未赋值元素系统自动填 0;不能对已经定义完成的数组整体直接赋值;
  5. 嵌入式开发,数组多用于传感器缓存、串口接收缓冲区,写代码时刻警惕下标越界。
http://www.jsqmd.com/news/1285590/

相关文章:

  • 豆包AI商业实战手册:33个副业变现案例解析
  • 十三层大一统模型下华夏六家核心同源体系——气化运化、天人混元完整论证
  • OpenClaw轻量级AI框架:模块化设计与跨平台部署
  • 2026 年现阶段,山东诚信的代做标书企业有哪些,投标小白如何靠它轻松中标? - 领域鉴赏官
  • 从零部署NAXSI:Nginx原生WAF模块的配置、白名单策略与实战调优
  • JavaScript乘性操作符原理与应用全解析
  • 壹遮安电动雨棚质量可靠吗 十大用户横评 所见即所得 - 工业推荐榜
  • VRTK:Unity VR开发核心交互框架深度解析与实战指南
  • HDMI 2.1核心技术解析:FRL、DSC、VRR与ALLM如何重塑视听体验
  • 生物素-冰片Biotin-Borneol|生物素 - 龙脑 冰片靶蛋白 Pull-down 垂钓筛选工具
  • 运算放大器反相与同相电路:原理、区别与工程选型指南
  • 永久保存你的QQ空间记忆:GetQzonehistory完整备份方案
  • 基于Halton序列的图像加密:原理、Matlab实现与相关性分析
  • Unity翻书插件Book-Page Curl Pro:从原理到实战的完全指南
  • 车载通信新选择:SEN协议原理、硬件设计与实战调优
  • 普中51单片机ISP下载全流程详解:从CH340驱动到STC-ISP操作避坑指南
  • 2026成都壹遮安户外用品服务口碑推荐强势出炉,零套路不踩坑,选购看这篇就够 - myqiye
  • Cortex-M内核PPA深度解析:性能、功耗与面积的嵌入式权衡艺术
  • 2026广东叛逆青少年成长学校口碑推荐 价格透明不踩坑 - 工业品网
  • 用Scratch编程可视化鸽巢原理:从数学公理到交互式模拟实验
  • GGUF格式与FLUX.2-dev模型本地部署实战指南
  • 深入解析ARM Cortex-M异常与中断:从原理到实战调试
  • 量子计算机:打破经典算力边界的未来计算
  • SOT-89-3封装LDO管脚定义陷阱:硬件工程师必知的封装兼容性问题
  • Python数据分析入门:Pandas安装与环境配置全攻略
  • 基于树莓派Pico与PIR传感器的智能感应吓人装置DIY全攻略
  • 开放式耳机什么牌子好用又实惠?盘点耳机排行榜前十名
  • PPG心率传感器原理、实战与项目集成全解析
  • Python全栈claude.md文档
  • Turtle 3PA三轮小车改装:从硬件选型到PID算法实现自动循迹