C语言第六课:从库函数到自定义
一、函数的概念C语言中的函数就是一个完成某项特定的任务的一小段代码在C语言中我们一般会见到两种函数库函数和自定义函数二、库函数1.标准库和头文件c语言标准中规定了C语言的各种语法规则ifwhilefor等等C语言并不提供库函数printfscanf等等。库函数相关头文件https://zh.cppreference.com/w/c/headerC/C官方的链接旧版/有搜索栏https://zh.cppreference.com/w/c/headercplusplus.com新版/无搜索栏https://legacy.cplusplus.com/reference/clibrary/三、自定义函数1.一般形式tip返回类型用来表示函数计算结果的类型有时候返回类型可以是 void 表示什么都不返回。函数名尽量要根据函数的功能起的有意义参数如果有参数要交代清楚参数的类型和名字以及参数的个数函数的参数也可以是 void 明确表示函数没有参数。{ }括起来的部分被称为函数体函数体就是完成计算的过程。ex四、形参和实参1.基础定义实际参数简称实参是真实传递给函数的参数比如上述例子中mian函数中的a,b。形式参数简称实参是定义函数时写在函数括号里的变量名即上述例子中void max函数中的“a”“b”形参仅在函数内部有效函数执行结束自动销毁。形式参数只有在函数被调用的过程中为了存放实参传递过来的值才会向内存申请空间这个过程就是形参的实例化2.形参和实参的关系形参是实参的一份临时拷贝调用函数时实参将自身数据传递赋值给形参二者单向绑定函数内对形参的修改是否影响外部实参取决于数据是否可变函数结束后形参销毁绑定关系解除。五、return 语句return 后面可以是一个数值也可以是一个表达式如果是表达式则先执行表达式再返回表达式的结果。return 后面什么都不写这种写法适合返回类型是void的情况表示这个函数不用返回值。return语句执行后函数就彻底返回不再执行后面的代码。如果return返回值与函数返回类型不一致系统会自动将返回的值隐式转换为函数的返回类型。如果函数中存在if等分支语句则要确保每种情况下都要有返回值。如果不写函数的返回类型编译器默认函数的返回类型为int。函数写了返回类型但是函数中没有使用return返回值那么函数的返回值是未知的。六、数组做函数参数tip函数的形式参数要和函数的实参个数相匹配函数的实参是数组形参也可以是写成数组形式的形参如果是一维数组数组大小可以省略不写形参如果是二维数组行可以省略不写但是列不能省略数组传参形参是不会创建新的数组的形参操作的数组和实参的数组是同一个数组七、嵌套调用与链式访问1.函数的嵌套调用2.函数的链式访问将一个函数的返回值作为另外一个函数的参数像链条一样将函数串起来就是函数的链式访问最里层的printf先打印12因为12 有2个数字中间的printf返回2因为2是1个数字因此最外层的printf返回值1因此最后的返回结果为1221八、函数的声明和定义函数在使用之前要保证先声明后使用即要先告诉编译器有一个函数叫什么参数是什么返回类型是什么1.单个文件内部的函数声明以及定义2.多文件下的函数的声明以及定义tip创建项目的时候提前创建一个目录后面把项目相关的文件都放到同一个目录其实头文件包含的本质是把头文件中的信息拷贝到这里九、static与externstatic 与extern 都是C语言中的关键字static是静态的意思可以修饰局部变量、全局变量、函数exturn可以用来声明来自外部文件的符号1.作用域和生命周期1.1作用域变量能被访问到的有效范围空间哪里能访问ex局部变量的作用域是变量所在的局部范围全局变量的作用域是整个工程项目1.2生命周期变量从【创建--使用--销毁】完整的存活时间段时间内存存活多久2.static2.1 static 修饰局部变量n 的生命周期变长了n出了函数也不销毁了原因是static 修饰局部变量改变了变量的生命周期生命周期的改变本质上是改变了变量的存储类型本来一个局部变量是存储在内存的栈区的但是被 static 修饰后存储到了静态区。存储在静态区的变量和全局变量是一样的生命周期就和程序的生命周期一样了只有程序结束变量才销毁内存才回收但作用域是不变的。2.2 static 修饰全局变量全局变量具有外部链接属性static 修饰全局变量后只能在自己所在的.c文件中使用别的.c文件就算写extern int num;也访问不到static 修饰全局变量可以实现文件隔离防止多文件全局名冲突。2.3 static 修饰函数函数与全局变量一样是具有外部链接属性的用法与全局变量一样。

相关新闻

Windows 11恢复经典开始菜单:组策略与注册表终极指南

Windows 11恢复经典开始菜单:组策略与注册表终极指南

1. 为什么我们还在怀念那个“经典”的开始菜单? 如果你和我一样,是从 Windows 95、XP 甚至 Windows 7 一路用过来的老用户,那么第一次打开 Windows 11 时,那个居中、圆角、图标巨大、功能却似乎被“简化”的开始菜单,很…

2026/10/10 12:41:25 阅读更多 →
个人核心技能体系构建与实战应用指南

个人核心技能体系构建与实战应用指南

很多开发者在职业生涯的某个阶段都会遇到类似的瓶颈:技术栈似乎很熟练,但面对新的业务领域或更高的职位要求的时,却感到无从下手。这种焦虑往往不是因为不够努力,而是缺乏一套系统的方法来审视自己的技能树。我们常常陷入“盲目学…

2026/10/11 1:53:52 阅读更多 →
Flutter在OpenHarmony上实现底部弹窗的实践与优化

Flutter在OpenHarmony上实现底部弹窗的实践与优化

1. 项目概述 Flutter作为Google推出的跨平台UI框架,与OpenHarmony这一国产开源操作系统的结合,正在开辟移动开发的新天地。这次我们要实现的底部弹窗(Bottom Sheet)功能,是移动应用中极为常见的交互组件——从电商App的…

2026/10/11 1:53:52 阅读更多 →

最新新闻

Mac外接硬盘无法写入?一文讲透文件系统格式、NTFS与exFAT的选择

Mac外接硬盘无法写入?一文讲透文件系统格式、NTFS与exFAT的选择

很多人第一次把移动硬盘插到 Mac 上,会遇到两种特别抓狂的情况:一种是从 Windows 电脑拿过来的 NTFS 硬盘,插上之后所有文件都能看,但想删一个、拖一个进去,系统直接提示“磁盘是只读的”;还有一种更离谱&a…

2026/10/11 4:52:24 阅读更多 →
企业微信API开发:修改配置为什么需要重启服务?

企业微信API开发:修改配置为什么需要重启服务?

在企业微信自动化系统中,接口地址、消息模板、发送规则和业务开关通常需要根据实际情况调整。 如果每次修改配置都必须重新部署或重启服务,不仅操作麻烦,还可能影响正在执行的任务。 可以根据配置类型,设计适合的更新机制。 一…

2026/10/11 4:52:24 阅读更多 →
跨会话记忆实战:用claude-mem为AI助手构建可检索记忆库

跨会话记忆实战:用claude-mem为AI助手构建可检索记忆库

上周我照常打开一个新的终端会话,让 AI 助手继续处理一个跟了三天的项目。它上来就问我要项目背景、依赖关系、之前定好的技术方案——那一刻我真的有点崩溃:同样的背景我至少解释过三次了。也就是从那时候起,我开始动手折腾 claude-mem 这类…

2026/10/11 4:52:24 阅读更多 →
多目标函数优化实战:从Pareto前沿到NSGA-II工程落地

多目标函数优化实战:从Pareto前沿到NSGA-II工程落地

简介:这份资源面向需要在MATLAB环境下处理多目标优化问题的学生、科研人员与数学建模竞赛选手,核心是提供一套可直接运行的多目标优化模型代码与遗传算法工具箱。包内共64个文件,以60个m脚本为主体,辅以txt说明、ps与pdf文档&…

2026/10/11 4:52:24 阅读更多 →
二进制全一序列算法:从位运算到大数取模的工程实践

二进制全一序列算法:从位运算到大数取模的工程实践

“算法111111”,这名字乍看像随手敲的占位符,但在我代码仓库里,它是个正经编号。所谓“111111”,不是六个一凑热闹,而是二进制下的全一序列:一位的 1、两位的 11、三位的 111,一直到六位的 1111…

2026/10/11 4:52:24 阅读更多 →
n8n集成APITemplate.io节点:自动化生成PDF报告完整指南

n8n集成APITemplate.io节点:自动化生成PDF报告完整指南

1. 这个节点到底解决什么问题我先说一个场景:你辛辛苦苦用n8n把订单数据、客户信息、库存报表全部串成了自动化流程,每天定时跑、遇到异常自动告警,一切都很顺利。直到有一天业务同事跑过来说:“能不能每天自动生成一份带logo、带…

2026/10/11 4:51:24 阅读更多 →

日新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 5:23:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 10:38:42 阅读更多 →