C语言函数知识(✿◡‿◡)
目录库函数与自定义函数库函数的使用方法自定义函数实参与形参return语句返回值的用处数组做函数游戏函数嵌套调用链式访问函数的定义与声明单个文件和多个文件static 和 extern一、函数的定义函数function⼦程序⼦程序这种翻译更加准确⼀些。C语⾔中的函数就是⼀个完成某项特定的任务的⼀⼩段代码。⼀个⼤的计算任务可以分解成若⼲个较⼩的函数对应较⼩的任务完成。同时⼀个函数如果能完成某项特定任务的话这个函数也是可以复⽤的提升了开发软件的效率。二、库函数官方库函数printf 、 scanf 都是库函数库函数也是函数不过这些函数已经是现成的我们只要学会就能直接使⽤了。有了库函数⼀些常⻅的功能就不需要程序员⾃⼰实现了⼀定程度提升了效率同时库函数的质量和执⾏效率上都更有保证。各种编译器的标准库中提供了⼀系列的库函数这些库函数根据功能的划分都在不同的头⽂件中进⾏了声明。库函数相关头⽂件https://zh.cppreference.com/w/c/header库函数的使用方法推荐的网站cplusplus.comhttps://legacy.cplusplus.com/reference/clibrary/例如搜索printf的用法来来来如何使用使用sqrt来计算100平方根tip库函数是在标准库中对应的头⽂件中声明的所以库函数的使⽤务必包含对应的头⽂件不包含是可能会出现⼀些问题的。例2三、自定义函数⾃定义函数其实更加重要也能给程序员写代码更多的创造性。自定义函数的语法形式ret_type fun_name(形式参数) { } //ret_type:是函数的返回类型 //fun_name:是函数名 //{}里面放的是函数体把函数想象成⼩型的⼀个加⼯⼚⼯⼚得输⼊原材料经过⼯⼚加⼯才能⽣产出产品那函数也是⼀样的函数⼀般会输⼊⼀些值可以是0个也可以是多个经过函数内的计算得出结果。ret_type 是⽤来表⽰函数计算结果的类型有时候返回类型可以是 void 表⽰什么都不返回fun_name 是为了⽅便使⽤函数就像⼈的名字⼀样有了名字⽅便称呼函数有了名字⽅便调⽤所以函数名尽量要根据函数的功能起的有意义。函数的参数就相当于⼯⼚中送进去的原材料函数的参数也可以是 void 明确表⽰函数没有参数。如果有参数要交代清楚参数的类型和名字以及参数个数。{}括起来的部分被称为函数体函数体就是完成计算的过程。函数使用的举例步骤我们根据要完成的功能给函数取名Add函数Add需要接收2个整型类型的参数函数计算的结果也是整型。所以我们根据上述的分析写出函数另一个写法okok也是完成了记得调用哦四、实参和形参函数的参数部分需要交代清楚参数个数每个参数的类型是啥形参的名字叫啥。在函数使⽤的过程中把函数的参数分为实参和形参实参在上⾯代码中第2~7⾏是 Add 函数的定义有了函数后再第17⾏调⽤Add函数的。我们把第17⾏调⽤Add函数时传递给函数的参数a和b称为实际参数简称实参。实际参数就是真实传递给函数的参数。形参在上⾯代码中第2⾏定义函数的时候在函数名 Add 后的括号中写的 x 和 y 称为形式参数简称形参。为什么叫形式参数呢实际上如果只是定义了 Add 函数⽽不去调⽤的话 Add 函数的参数 x和 y 只是形式上存在的不会向内存申请空间不会真实存在的所以叫形式参数。形式参数只有在函数被调⽤的过程中为了存放实参传递过来的值才向内存申请空间这个过程就是形参的实例化。实参和形参的关系虽然我们提到了实参是传递给形参的他们之间是有联系的但是形参和实参各⾃是独⽴的内存空间。这个现象是可以通过调试来观察的。我们在调试的时候可以观察到x和y确实得到了a和b的值但是x和y的地址和a和b的地址是不⼀样的所以我们可以理解为形参是实参的⼀份临时拷⻉。五、return语句在函数的设计中函数中经常会出现return语句这⾥讲⼀下return语句使⽤的注意事项。return后边可以是⼀个数值也可以是⼀个表达式如果是表达式则先执⾏表达式再返回表达式的结果。return后边也可以什么都没有直接写 return; 这种写法适合函数返回类型是void的情况。return语句执⾏后函数就彻底返回后边的代码不再执⾏。return返回的值和函数返回类型不⼀致系统会⾃动将返回的值隐式转换为函数的返回类型。如果函数中存在if等分⽀的语句则要保证每种情况下都有return返回否则会出现编译错误。函数的返回类型如果不写编译器会默认函数的返回类型是int。函数写了返回类型但是函数中没有使⽤return返回值那么函数的返回值是未知的。函数声明有返回类型但是代码全程没有 return 语句调用这个函数接收返回值时拿到的是内存里随机垃圾值属于未定义行为六、数组做函数参数在使⽤函数解决问题的时候难免会将数组作为参数传递给函数在函数内部对数组进⾏操作(✿◡‿◡)⽐如写⼀个函数将⼀个整型数组的内容全部置为-1再写⼀个函数打印数组的内容。1.先写主体程序2.开始编写函数set_arr3.总之以上是一维数组的下面讲二维数组数组作为参数传递给了set_arr 和 print_arr 函数了那这两个函数应该如何设计呢这⾥我们需要知道数组传参的⼏个重点知识函数的形式参数要和函数的实参个数匹配调用函数时传入实参的数量必须和函数定义时形参数量一致函数的实参是数组形参也是可以写成数组形式的形参如果是⼀维数组数组⼤⼩可以省略不写形参如果是⼆维数组⾏可以省略但是列不能省略数组传参形参是不会创建新的数组的形参操作的数组和实参的数组是同⼀个数组七、嵌套调⽤和链式访问嵌套调⽤就是函数之间的互相调⽤每个函数就像⼀个乐⾼零件正是因为多个乐⾼的零件互相⽆缝的配合才能搭建出精美的乐⾼玩具假设我们计算某年某⽉有多少天如果要函数实现可以设计2个函数is_leap_year()根据年份确定是否是闰年get_days_of_month()调⽤is_leap_year确定是否是闰年后再根据⽉计算这个⽉的天数这⼀段代码完成了⼀个独⽴的功能。代码中反应了不少的函数调⽤main函数调⽤scanf、printf、get_days_of_monthget_days_of_month函数调⽤is_leap_year未来的稍微⼤⼀些代码都是函数之间的嵌套调⽤但是函数是不能嵌套定义的。八、链式访问所谓链式访问就是将⼀个函数的返回值作为另外⼀个函数的参数像链条⼀样将函数串起来就是函数的链式访问。前⾯的代码完成动作写了2条语句把如果把strlen的返回值直接作为printf函数的参数呢这样就是⼀个链式访问的例⼦了。九、函数的声明和定义单个文件⼀般我们在使⽤函数的时候直接将函数写出来就使⽤了。函数的调⽤⼀定要满⾜先声明后使⽤多个⽂件⼀般在企业中我们写代码时候代码可能⽐较多不会将所有的代码都放在⼀个⽂件中我们往往会 根据程序的功能将代码拆分放在多个⽂件中。⼀般情况下函数的声明、类型的声明放在头⽂件.h中函数的实现是放在源⽂件.c⽂件中。如下有了函数声明和函数定义的理解我们写代码就更加⽅便了static 和 extern在下一章节补充

相关新闻

【Web全栈进阶】JWT无状态认证:签发、校验、刷新

【Web全栈进阶】JWT无状态认证:签发、校验、刷新

你学会了“签名手环”(session:登录状态存在服务器)。今天升级成“数字令牌”——JWT:身份自含、验签即信、服务器不用记任何状态。给裸奔了五篇的早报站API穿上衣服。 🎯 本篇产出:注册 / 登录 / 刷新三个…

2026/10/10 18:16:48 阅读更多 →
C++跨平台开发实战:从编译器差异到部署排坑指南

C++跨平台开发实战:从编译器差异到部署排坑指南

接手过一个挺折腾的项目:Windows上编译运行一切正常,一到Linux服务器上就崩溃,而且崩得很没规律。紧接着macOS上同事又报告中文乱码。那几天我基本在三个系统之间来回切,最后发现问题不在业务逻辑,而在最底层那批"…

2026/10/10 18:15:47 阅读更多 →
滑动窗口最大值:单调队列优化从O(nk)到O(n)的经典算法

滑动窗口最大值:单调队列优化从O(nk)到O(n)的经典算法

1. 这一题在LeetCode题库里的位置和价值题目名字一眼就能看出坑点:LeetCoce滑动窗口最大值。如果你在搜索引擎里看到这个拼写,别急着笑,其实它是LeetCode 239题“Sliding Window Maximum”的常见搜索变体。我在刷题群里见过不下三个人用这个拼…

2026/10/10 18:15:47 阅读更多 →

最新新闻

勒索病毒应急响应全指南:从隔离取证到数据恢复实战

勒索病毒应急响应全指南:从隔离取证到数据恢复实战

1. 中招瞬间的第一反应:先别急着拔网线先说个真实场景。某天凌晨两点,值班同事打来电话,声音都在抖:文件打不开了,后缀变成一串乱码,桌面上多了个 txt,大意是“你的文件已被加密,72小…

2026/10/10 22:12:00 阅读更多 →
Gitee Team实操:构建软件工厂数字神经系统,研发效能落地全攻略

Gitee Team实操:构建软件工厂数字神经系统,研发效能落地全攻略

在企业里推动 DevOps 或研发效能落地,最烦的不是技术难题,而是需求、代码、构建、测试各干各的,谁也说不清现在的版本到底能不能发布。Gitee Team 真正打动我的地方,是它把“软件工厂”这个概念变成了可以落地的数字神经系统——从…

2026/10/10 22:12:00 阅读更多 →
深入Linux管道:从匿名管道到FIFO的进程间通信实战指南

深入Linux管道:从匿名管道到FIFO的进程间通信实战指南

1. 从一次“Broken pipe”说起:为什么我决定彻底搞懂管道先把话说在前面:如果你写过任何Linux下的多进程程序,那你大概率见过这两行输出之一——Broken pipe,或者进程莫名其妙卡住不动、像死锁一样。我第一次被“管道”正面教育&a…

2026/10/10 22:12:00 阅读更多 →
SpringBoot学生公寓报修平台:设计实现与部署实战

SpringBoot学生公寓报修平台:设计实现与部署实战

每年开学季和期末季,学生公寓的报修需求都会集中爆发——水龙头漏水、空调不制冷、寝室灯管闪坏、柜门合不上,各种报修单子从宿管、电话、微信群里涌进来,靠人工登记和派单很容易漏单、错单、响应慢。我之前带团队做过一个基于SpringBoot的学…

2026/10/10 22:12:00 阅读更多 →
cua不是缩写而是上下文坐标:工程师的三维解码方法论

cua不是缩写而是上下文坐标:工程师的三维解码方法论

1. 项目概述:一个被严重误读的字母组合,到底“cua”在真实技术场景中意味着什么?最近在多个技术社区、开发者群和内部协作平台里,“cua”这个词高频出现,但几乎没人能说清它具体指代什么——有人以为是某个新出的AI模型…

2026/10/10 22:11:59 阅读更多 →
把安全测试嵌进自动化流水线:DevSecOps落地实战

把安全测试嵌进自动化流水线:DevSecOps落地实战

"自动化测试"这四个字,大部分团队每天在跑;"安全测试"这四个字,大部分团队只在上线前才想起来。把它们真正揉进同一条流水线,让它跟着每次构建、每次提测自动执行,这就是DevSecOps要解决的核心问题…

2026/10/10 22:10:59 阅读更多 →

日新闻

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

1. 从“卫星轨道分类”这个标题说起:为什么值得花时间搞懂第一次接触“卫星轨道分类”这个概念,很多人会觉得它离自己很远——不就是天上的星星怎么转吗?但如果你正在做航天任务规划、遥感数据接收、星座设计,甚至只是准备一场航天…

2026/10/10 0:00:39 阅读更多 →
Spring AOP 核心原理与实战:从概念到日志切面落地

Spring AOP 核心原理与实战:从概念到日志切面落地

1. 从一个真实痛点说起:为什么你的代码里到处都是重复逻辑刚入行那会儿,我写过一个用户管理模块,注册、登录、改密码、注销四个接口。每个接口里都塞了几乎一样的日志打印、参数校验、事务开启和提交。当时觉得没什么,能跑就行。直…

2026/10/10 0:00:40 阅读更多 →
Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

简介:这是一套面向计算机相关专业学生与项目实战学习者的Python数据采集与分析可视化完整项目,以Boss直聘岗位数据为对象,适合用作毕业设计、课程设计或期末大作业。资源包共38个文件,约246KB,以13个py源码文件为核心&…

2026/10/10 0:00:40 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* 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 11:14:25 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* 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 1:36:08 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* 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 11:14:58 阅读更多 →

月新闻

我发现了一个新思路:用 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 阅读更多 →