学嵌入式和C语言编程 | 学习日记Day10:函数、函数的调用,值传递、递归、一维整型数组做函数参数
前言今天学习 C 语言函数函数是实现代码模块化最重要的工具。使用函数可以降低程序耦合度减少重复代码提高代码复用能力。在嵌入式项目开发中我们会把传感器读取、外设驱动、数据处理全部封装成函数方便调用与维护。本次学习内容包含函数定义、调用、声明、值传递、递归调用以及数组作为函数参数的传参规则。一、函数基础函数优点降低程序的耦合性关联度减少重复代码让程序模块化增强代码复用性。1. 函数定义格式c返回值类型 函数名(形参表){函数体;}返回值可以是 int、char 等基础数据类型也可以是构造数据类型。用来返回函数最终运算结果。void空类型函数执行完毕不需要返回任何结果时使用 void 作为返回值。函数名标识符遵守标识符命名规则尽量见名知意。习惯以 “动词”“宾语” 命名例如get_max_val();获取最大值。形参表函数执行过程中需要用到的条件。格式数据类型 形参名, 数据类型 形参名, 数据类型 形参名 …注意当函数有明确返回值类型必须写return如果不写 return系统返回内存里随机垃圾值。如果返回值为 void可以不写 return也可以写return;。2. 函数调用格式c函数名(实参表);实参传递给函数的实际条件可以是常量、变量、表达式。实参要求实参的个数和形参的个数必须一一对应。实参和形参的数据类型要一致或者相互兼容。概念区分主调函数发起调用的函数被调函数被别人调用的函数函数执行规则函数不被调用则不会执行调用几次就执行几次。实参和形参名字可以相同也可以不同。3. 函数的声明出现场景被调函数写在主调函数后面编译器报implicit declaration隐式声明警告。两种声明方式在主调函数前面进行函数声明返回值类型 函数名(形参表);多文件开发其他文件想要调用本文件函数也需要做函数声明。4. 函数调用过程栈空间工作机制保护现场函数被调用时把调用位置的下一条指令地址保存到栈空间栈遵循先进后出。恢复现场被调函数执行结束从栈取出保存的地址CPU 回到调用处继续执行后续代码。二、函数的传参 —— 值传递值传递实参向形参做拷贝实参、形参拥有各自独立内存空间。值传递核心特点单向传递只把实参拷贝给形参。在被调函数内部修改形参不会影响主调函数里面原来的实参变量。项目值传递说明内存空间实参、形参各自独立内存数据流向只能实参 → 形参单向拷贝修改效果被调函数修改形参主调函数变量不受影响三、函数的递归调用定义函数直接或者间接调用自身。本质属于循环的一种实现方式。重点规则递归必须设置递归出口没有出口就会变成死循环造成栈溢出。缺点递归调用系统资源开销大于普通循环消耗栈内存嵌入式开发不建议深度递归。简单递归示例逻辑求累加Plain Textmain() → get_sum(5) → get_sum(4) → get_sum(3) → get_sum(2) → get_sum(1)递归出口get_sum(5) → get_sum(4)1 → get_sum(3)1 → get_sum(2)1 → get_sum(1)1→return 1四、一维数组作为函数参数数组名本质是数组首元素的地址。1. 传参书写格式函数定义c返回值类型 函数名(int 数组名[], int len){//函数内部数组使用方式和外部完全一样}函数调用c函数名(数组名,数组长度);2. 数组做函数参数四条注意点形参书写格式int a[]方括号内常量可以写也可以省略。数组名传参传递的不是全部数组拷贝传递的是数组首元素地址形参本质接收一个起始地址。只传数组名无法得到数组长度必须额外把数组长度 len 当做参数传入函数。数组作为函数参数传递给被调函数后函数内部的使用方法和外部的使用方法一样除了sizeof数组名。值传递 vs 数组传参对比传参方式传递内容修改是否影响外部原始数据普通变量值传递变量值拷贝不影响外部变量数组名作为参数数组首元素地址函数内修改数组外部数组同步改变今日学习总结函数三要素返回值、函数名、形参列表void 代表无返回值有返回值的函数必须使用 return。实参与形参个数、类型需要匹配值传递是单向拷贝修改形参不会改变主调函数变量。函数写在调用之后必须提前做函数声明消除隐式声明警告。函数调用依靠栈空间完成保护现场、恢复现场栈遵循先进后出。递归就是函数调用自己一定要写递归出口递归栈开销大嵌入式尽量少用深度递归。数组名做函数参数传递的是首元素地址不是完整数组拷贝必须额外传入数组长度函数内部修改数组外部原始数组会被同步修改。工程实践嵌入式开发中传感器处理、外设驱动全部封装为函数提升代码可读性、复用性。

相关新闻

【每日夸夸】刷题Day007

【每日夸夸】刷题Day007

今天下班的时候,看了C语言编程规范.pdf,学到了怎么注释?1.注释的时候,想清楚what做什么?为什么要这么做?不用写怎么做。想清楚为什么要做?就像D工让我喊大家,说明书发布会喊了太多人…

2026/8/1 6:34:25阅读更多 →
2026年AI大模型开发实战:从Prompt工程到RAG系统全流程指南

2026年AI大模型开发实战:从Prompt工程到RAG系统全流程指南

随着AI技术的快速发展,大模型已成为开发者必须掌握的核心技能。但在实际学习过程中,很多同学面临资料零散、实战案例缺乏、环境配置复杂等问题。本文基于2026年最新技术趋势,通过一套完整的实操指南,带你系统掌握AI大模型开发全流…

2026/8/1 6:34:25阅读更多 →
Python自动化集成Bartender标签打印:命令行驱动与模板化方案实践

Python自动化集成Bartender标签打印:命令行驱动与模板化方案实践

1. 项目概述:当Python遇上Bartender,自动化打印的起点如果你在制造业、物流仓储或者任何需要处理大量标签打印的岗位上待过,你肯定对Bartender不陌生。这款由Seagull Scientific出品的条码标签设计与打印软件,几乎是工业级标签打印…

2026/8/1 6:34:25阅读更多 →
C#并发编程实战:ConcurrentDictionary线程安全字典原理与应用

C#并发编程实战:ConcurrentDictionary线程安全字典原理与应用

1. 从单打独斗到并肩作战&#xff1a;为什么我们需要线程安全的字典&#xff1f;在C#的世界里&#xff0c;Dictionary<TKey, TValue>几乎是每个开发者最早接触、也最常用的集合类型之一。它就像一个高效的私人管家&#xff0c;帮你把数据&#xff08;值&#xff09;和对应…

2026/8/1 7:44:43阅读更多 →
古籍数字化技术实践:多语言OCR与翻译协作流程解析

古籍数字化技术实践:多语言OCR与翻译协作流程解析

这次我们来看一个特殊的数字人文项目——《Ars Astronomica》&#xff0c;它专注于将罕见的天文学古籍进行数字化和翻译。这个项目由学术团队主导&#xff0c;重点不是技术栈多复杂&#xff0c;而是如何让16世纪的希伯来语和拉丁语天文学著作能被现代英语读者直接访问。如果你关…

2026/8/1 7:44:43阅读更多 →
深入解析AXI协议BURST机制:从核心三要素到高性能设计实践

深入解析AXI协议BURST机制:从核心三要素到高性能设计实践

1. 从“单次读写”到“突发传输”&#xff1a;为什么需要BURST&#xff1f; 如果你接触过FPGA设计或者高性能SoC&#xff0c;对AXI协议一定不陌生。它几乎是现代芯片内部总线互联的“普通话”。但很多工程师在初学AXI时&#xff0c;常常会卡在一个看似简单、实则内涵丰富的概念…

2026/8/1 7:44:43阅读更多 →
赤峰事业编培训机构红黑榜:2026年避坑与选择全指南

赤峰事业编培训机构红黑榜:2026年避坑与选择全指南

在赤峰&#xff0c;每年参加事业编考试的人数不断增长&#xff0c;市面上各类培训机构也层出不穷。很多考生在报班这件事上都有过迷茫&#xff1a;广告铺天盖地&#xff0c;试听时天花乱坠&#xff0c;真正学习起来却发现货不对板。正因为信息差巨大&#xff0c;“赤峰事业编培…

2026/8/1 7:44:43阅读更多 →
Kiro自动化工具实战:提升RPA效率300%的最佳实践

Kiro自动化工具实战:提升RPA效率300%的最佳实践

1. Kiro实战与最佳实践概述Kiro作为一款新兴的自动化工具&#xff0c;正在RPA&#xff08;机器人流程自动化&#xff09;领域掀起一场效率革命。我最近在三个企业级项目中深度应用了Kiro&#xff0c;发现其独特的可视化流程设计器和强大的API集成能力&#xff0c;能够将重复性工…

2026/8/1 7:44:43阅读更多 →
哈夫曼编码实战:从修理牧场到最小堆与双队列算法详解

哈夫曼编码实战:从修理牧场到最小堆与双队列算法详解

1. 项目概述&#xff1a;从“修理牧场”到哈夫曼编码的实战最近在刷PTA&#xff08;程序设计类实验辅助教学平台&#xff09;的题目&#xff0c;碰到了“修理牧场”这道题。乍一看标题&#xff0c;还以为是什么农场模拟经营游戏里的任务。实际上&#xff0c;这是一道非常经典的…

2026/8/1 7:42:42阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

&#x1f539; 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具&#xff0c;凭借本地离线运行、可视化图形操作和任务自动化三大核心特性&#xff0c;赢得了众多用户的青睐。与普通在线对话AI工具不同&#xff0c;它属于能够直接操控本机软硬件的智能数字员工…

2026/7/31 20:44:05阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接&#xff0c;是用激光束对阀座壳体&#xff08;通常为不锈钢或铝合金&#xff09;进行密封焊接&#xff0c;使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/31 17:41:43阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX&#xff1a;三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/31 20:44:05阅读更多 →
无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南&#xff1a;如何实现快速高效的多媒体处理 【免费下载链接】lossless-cut The swiss army knife of lossless video/audio editing 项目地址: https://gitcode.com/gh_mirrors/lo/lossless-cut 在数字媒体创作领域&#xff0c;视频编辑处理的质量损…

2026/8/1 0:00:10阅读更多 →
AI辅助本科论文写作:8大工具评测与高效使用指南

AI辅助本科论文写作:8大工具评测与高效使用指南

1. 本科生论文写作的AI辅助现状本科毕业论文是每个大学生必须跨越的一道坎。记得我当年写论文时&#xff0c;光是文献检索就花了整整两周时间&#xff0c;打印的参考文献堆满了半个书桌。如今AI技术的发展为学术写作带来了革命性变化&#xff0c;合理使用这些工具可以节省80%以…

2026/8/1 0:00:10阅读更多 →
如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统&#xff1a;从零开始搭建Python抢票助手 【免费下载链接】ticket-purchase 大麦自动抢票&#xff0c;支持人员、城市、日期场次、价格选择 项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase 还在为抢不到热门演唱会门票…

2026/8/1 0:00:10阅读更多 →
无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南&#xff1a;如何实现快速高效的多媒体处理 【免费下载链接】lossless-cut The swiss army knife of lossless video/audio editing 项目地址: https://gitcode.com/gh_mirrors/lo/lossless-cut 在数字媒体创作领域&#xff0c;视频编辑处理的质量损…

2026/8/1 0:00:10阅读更多 →
AI辅助本科论文写作:8大工具评测与高效使用指南

AI辅助本科论文写作:8大工具评测与高效使用指南

1. 本科生论文写作的AI辅助现状本科毕业论文是每个大学生必须跨越的一道坎。记得我当年写论文时&#xff0c;光是文献检索就花了整整两周时间&#xff0c;打印的参考文献堆满了半个书桌。如今AI技术的发展为学术写作带来了革命性变化&#xff0c;合理使用这些工具可以节省80%以…

2026/8/1 0:00:10阅读更多 →
如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统&#xff1a;从零开始搭建Python抢票助手 【免费下载链接】ticket-purchase 大麦自动抢票&#xff0c;支持人员、城市、日期场次、价格选择 项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase 还在为抢不到热门演唱会门票…

2026/8/1 0:00:10阅读更多 →