- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
单片机原理与应用设计-子程序结构欢迎来到单片机原理与应用设计课程。今天我们将深入探讨子程序结构,这是单片机编程中的核心概念。
什么是子程序1定义子程序是完成特定功能的程序段,可以被主程序或其他子程序调用。2特点具有独立性,可重复使用,能接收参数并返回结果。3类型包括函数(有返回值)和过程(无返回值)两种主要类型。
子程序的作用和优点模块化将复杂问题分解为小的功能模块,提高代码的可读性和维护性。代码复用减少重复代码,提高开发效率和程序的可靠性。结构化使程序结构更清晰,便于团队协作和代码管理。
子程序的基本结构头部包含子程序名称、参数列表和返回值类型。主体实现子程序功能的代码块,包括局部变量声明和执行语句。返回语句指定子程序的返回值(如果有),并将控制权交回调用者。
子程序的定义和声明定义完整实现子程序功能,包括函数头和函数体。通常放在源文件中。声明只包含函数头,不包含函数体。通常放在头文件中,用于告知编译器函数的存在。原型函数声明的另一种说法,指定函数的接口但不包含实现细节。
子程序的调用过程1准备参数将实参传递给子程序的形参。2保存现场保存当前程序的执行环境,包括程序计数器和寄存器值。3跳转执行将控制权转移到子程序的起始地址。4返回主程序子程序执行完毕后,恢复现场并返回调用点。
子程序的参数传递实参准备调用程序准备实际参数值。形参匹配将实参与子程序的形式参数对应。值传递将实参的值复制给形参。执行操作子程序使用形参进行操作。
参数传递的方式值传递将实参的值复制给形参,不影响原始数据。引用传递传递实参的内存地址,可以直接修改原始数据。输出参数用于从子程序返回多个值。
值传递和引用传递的区别值传递创建参数的副本,不改变原始数据。适用于简单数据类型。引用传递传递原始数据的地址,可以修改原始数据。适用于复杂数据结构。
子程序的返回值1定义返回类型在函数声明时指定返回值的数据类型。2使用return语句在函数体内使用return语句返回结果。3接收返回值调用程序可以使用变量接收返回值。4多值返回可以使用结构体或指针参数返回多个值。
子程序内部变量的作用域1全局作用域整个程序可见2文件作用域当前文件可见3函数作用域函数内部可见4块作用域代码块内可见
局部变量和全局变量局部变量在函数内部声明,只在函数内部有效。生命周期短,内存使用效率高。全局变量在所有函数外部声明,整个程序都可访问。生命周期长,便于数据共享。
静态局部变量定义使用static关键字声明的局部变量,具有局部作用域但全局生命周期。特点在函数调用之间保持其值,只初始化一次。应用用于保存函数的状态信息,如计数器或缓存数据。
递归调用子程序1定义问题将大问题分解为相同类型的小问题。2确定基本情况定义递归的终止条件。3递归调用函数调用自身解决子问题。4组合结果将子问题的解组合成原问题的解。
递归的优缺点优点代码简洁,易于理解适合处理具有递归性质的问题可以减少重复代码缺点可能导致栈溢出时间和空间复杂度可能较高调试困难
子程序的嵌套调用1主程序调用子程序A2子程序A调用子程序B3子程序B调用子程序C4子程序C执行并返回
子程序调用的原理保存现场将当前程序状态压入堆栈。传递参数将参数传递给被调用的子程序。跳转执行程序计数器指向子程序的起始地址。恢复现场子程序执行完毕后,从堆栈恢复原来的程序状态。
堆栈的作用保存现场存储函数调用时的局部变量和返回地址。参数传递用于传递函数参数。恢复现场函数返回时恢复调用点的执行环境。
堆栈的压入和弹出压栈(Push)将数据元素添加到堆栈顶部,栈指针向高地址移动。出栈(Pop)从堆栈顶部移除数据元素,栈指针向低地址移动。
函数返回地址的保存1调用前保存在调用子程序前,将下一条指令的地址压入堆栈。2执行子程序程序计数器跳转到子程序的起始地址。3子程序结束执行返回指令,从堆栈弹出返回地址。4恢复执行程序计数器恢复为返回地址,继续执行主程序。
参数和局部变量的保存参数入栈调用函数前,将参数按照约定顺序压入堆栈。栈帧创建进入函数后,为局部变量分配空间。局部变量使用在函数执行过程中使用栈上的局部变量。栈帧销毁函数返回时,释放局部变量空间和参数。
子程序的异常处理1预防措施在代码中加入防御性编程,如参数检查。2异常检测使用try-catch语句捕获可能发生的异常。3错误处理在catch块中处理异常,如记录日志或恢复操作。4资源清理使用finally块确保资源被正确释放。
子程序的错误检查参数验证检查输入参数的有效性和范围。边界条件处理极端情况和特殊输入。返回值检查验证函数返回值的正确性。
子程序的效率优化1内联函数对于短小且频繁调用的函数,使用内联优化。2参数传递优化合理选择值传递或引用传递,减少不必要的拷贝。3局部变量优化合理使用寄存器变量,减少内存访问。4算法优化选择
您可能关注的文档
- 【初中数学课件】中考复习装修中的决策问题课件.ppt
- 【初中数学课件】中考复习课件中考数学答题策略与技巧课件.ppt
- 【初中数学课件】中考复习(代数式)课件.ppt
- 【初中数学课件】中考复习(图形的变换:轴对称,平移与旋转)课件.ppt
- 【初中数学课件】中考复习(方程,不等式)课件.ppt
- 【初中数学课件】中考总复习课件有理数的运算复习课件.ppt
- 【初中数学课件】中考数学中的阅读题课件.ppt
- 【初中数学课件】中考数学分式应用题解析课件.ppt
- 【初中数学课件】中考数学命题方向课件.ppt
- 【初中数学课件】中考数学研讨会课件.ppt
- 河南省郑州市第一中学2017-2018学年高一下学期周测物理试题(325)扫描版含答案.doc
- 山西省怀仁县第一中学2017-2018学年高二下学期第一次月考生物试题扫描版.doc
- 河南省六市高三下学期第一次联考试题(3月)理科综合扫描版含答案.doc
- 四川省高三全国Ⅲ卷冲刺演练(一)文综地理试卷扫描版含答案.doc
- 河南省洛阳市高三第二次统考文综试卷扫描版含答案.doc
- 甘肃省靖远县高三下学期第二次联考理科综合试题扫描版含答案.doc
- 问题导学法在办公场景中的实施策略及效果评估.docx
- 退休后的个人品牌打造与传播策略.docx
- 问题解决在办公流程优化中的应用.docx
- 问题导向的办公环境创新设计.docx
文档评论(0)