函数 函数 函数

发布时间:2026/10/19 7:20:23

函数 函数 函数 函数的概念库函数自定义函数形参和实参return语句数组做函数参数嵌套调用和链式访问函数的声明和定义1. 函数的概念C语言中函数的概念可以理解为子程序函数就是一段用于完成某项特定任务的代码。C语言的程序实际上是由无数个小的函数组合而成的。也可以说一个大的计算任务可以被分解成若干个较小的函数对应较小的任务来完成。在C语言中我们一般会见到两类函数• 库函数• 自定义函数2. 库函数2.1 标准库和头文件C语言标准中规定了C语言的各种语法规则但C语言本身并不提供库函数。C语言的国际标准ANSI C规定了一些常用函数的标准这些标准被称为标准库。不同的编译器厂商根据ANSI提供的C语言标准给出了一系列函数的实现这些函数就被称为库函数。各种编译器的标准库中提供了一系列库函数这些库函数根据功能的不同分别在不同的头文件中进行了声明。## 2.2 库函数的使用方法C/C官方的链接https://zh.cppreference.com/w/c/headercplusplus.comhttps://legacy.cplusplus.com/reference/clibrary/2.2.1 功能Computesquareroot计算平方根Returns the square root of x.返回平方根2.2.2 头文件包含库函数是在标准库中对应的头文件中声明的因此使用库函数时务必包含对应的头文件否则可能会出现一些问题。### 2.2.3 实践2.2.4 库函数文档的一般格式函数原型函数功能介绍参数和返回类型说明代码举例代码输出相关知识链接3. 自定义函数3.1 函数的语法形式3.2 函数的举例写一个加法函数完成2个整型变量的加法操作。Add函数也可以简化为4. 形参和实参4.1 实参在调用Add函数时传递给函数的参数a和b被称为实际参数简称实参。实参就是真实传递给函数的参数。## 4.2 形参在上面代码中定义函数的时候在函数名Add后的括号中写的x和y称为形式参数简称形参。形式参数:如果只是定义了Add函数而不去调用的话Add函数的参数x和y只是形式上存在的不会向内存申请空间不会真实存在的所以叫形式参数。形式参数只是在函数被调用的过程中为了存放实参传递过来的值才向内存申请空间这个过程就是形参的实例化。4.3 实参和形参的关系实参和形参之间存在联系但是形参和实参各自是独立的内存空间。x和y确实得到了a和b的值但是x和y的地址和a和b的地址是不一样的所以我们可以理解为形参是实参的一份临时拷贝。5. return 语句return语句执行后函数就彻底返回后边的代码不再执行。return返回的值和函数返回类型不一致系统会自动将返回的值隐式转换为函数的返回类型。如果函数中存在 if 等分支的语句则要保证每种情况下都有return返回否则会出现编译错误。6. 数组做函数参数写一个函数将一个整型数组的内容全部置为-1再写⼀个函数打印数组的内容。7. 嵌套调用和链式访问7.1 嵌套调用嵌套调用就是函数之间的互相调用正是因为函数之间有效的互相调用最后写出来了相对大型的程序。假设我们计算某年某⽉有多少天如果要函数实现可以设计2个函数:• is_leap_year()根据年份确定是否是闰年• get_days_of_month()调⽤is_leap_year确定是否是闰年后再根据⽉计算这个⽉的天数未来的稍微⼤⼀些代码都是函数之间的嵌套调⽤但是函数是不能嵌套定义的。7.2 链式访问所谓链式访问就是将⼀个函数的返回值作为另外⼀个函数的参数像链条⼀样将函数串起来就是函数的链式访问。printf 函数返回的是打印在屏幕上的字符的个数。上⾯的例⼦中我们就第⼀个printf打印的是第⼆个printf的返回值第⼆个printf打印的是第三个printf的返回值。第三个printf打印43在屏幕上打印2个字符再返回2第⼆个printf打印2在屏幕上打印1个字符再返回1第⼀个printf打印1所以屏幕上最终打印43218. 函数的声明和定义8.1 单个文件写⼀个函数判断⼀年是否是闰年。函数的调⽤⼀定要满⾜先声明后使⽤声明函数只要交代清楚函数名函数的返回类型函数的参数。函数声明中参数只保留类型省略掉名字也是可以的。8.2 多个文件⼀般情况下函数的声明、类型的声明放在头⽂件.h中函数的实现是放在源⽂件.c⽂件中。8.3 static 和externstatic和extern都是C语⾔中的关键字。static是静态的意思可以⽤来• 修饰局部变量• 修饰全局变量• 修饰函数extern是⽤来声明外部符号的。作⽤域和⽣命周期。8.3.1 static 修饰局部变量使⽤建议未来⼀个变量出了函数后我们还想保留值等下次进⼊函数继续使⽤就可以使⽤static修饰。代码2使用了static导致第一次n之后的值11得以保留所以第二次循环的时候n的值变为了11并循环1直至i4停止循环。8.3.2 static 修饰全局变量使⽤建议如果⼀个全局变量只想在所在的源⽂件内部使⽤不想被其他⽂件发现就可以使⽤static修饰。8.3.3 static 修饰函数使⽤建议⼀个函数只想在所在的源⽂件内部使⽤不想被其他源⽂件使⽤就可以使⽤static修饰。代码1代码2代码1是能够正常运⾏的但是代码2就出现了链接错误。
延伸阅读

更多相关文章

2026/10/19 7:20:23

page_alloc min_free_kbytes_sysctl_handler

min_free_kbytes_sysctl_handler() 是 /proc/sys/vm/min_free_kbytes 的 sysctl 处理函数,负责响应用户对该参数的读写请求。核心实现static int min_free_kbytes_sysctl_handler(const struct ctl_table *table, int write,void *buffer, size_t *length, loff_t *…

2026/10/19 7:20:23

Linux 开发工具(四) 熟悉自动化构建 make/Makefile

目录 一. make/makefile 的概念 1.1 Makefile的基本语法 1.2 代码示例 二. make/makefile 的使用 2.1 文件的清理 2.2 make 的使用细节 2.2.1 make/make【目标名】 2.2.2 make 的执行规则 2.2.2.1 stat 2.3 makefile 的使用细节 2.3.1 .PHONY 2.3.2 makefile 的依赖…

2026/10/19 8:45:45

开源CLI代码审查工具:Git原生+LLM可插拔的自动化守门人

1. 项目概述:这不是又一个“AI写代码”玩具,而是一套可嵌入日常开发流的开源代码审查协作者open-code-review 这个名字乍看平平无奇,但拆开来看——open(开放)、code(代码)、review(…

2026/10/19 8:45:45

open-code-review:一种开放、协议化的代码评审接口标准

1. “open-code-review”不是工具名,而是一类新型代码评审范式的命名起点最近在几个技术社区和内部工程效能群里,频繁看到“open-code-review”这个写法——它既不像传统工具名(比如 SonarQube、Reviewable),也不像标准…

2026/10/19 8:45:45

数据类型深度解析:从内存布局到类型转换的实战避坑指南

接手过不少线上故障,最后翻来覆去查根因,十有八九都会落回到一个最基础的概念上:数据类型。索引建错、接口传参对不上、数据库存储精度丢失、某个字段在序列化之后悄悄变了样——追到源头,全是类型处理不当惹的祸。这篇就围绕“4.…

2026/10/19 8:45:44

纯C++无迹卡尔曼滤波UKF实现:多传感器融合与姿态估计实战

简介:这份资源面向学习卡尔曼滤波与自动驾驶定位算法的C开发者,聚焦CTRV运动学模型下的无迹卡尔曼滤波(UKF)实现,解决非线性系统状态估计中EKF线性化误差偏大的问题。压缩包共404个文件,约3.05MB&#xff0…

2026/10/19 8:45:44

ZXing二维码扫描解码链路与识别率优化实战

简介:这份资源是面向Android及移动端开发者的ZXing二维码扫描集成示例工程,适合需要为应用快速添加扫码能力的初中级开发者。ZXing作为开源跨平台条码库,支持QR码、Data Matrix、Aztec、PDF417及Code 39、Code 128等多种码制,可实…

2026/10/19 8:40:42

open-code-review:基于CLI与Git集成的LLM代码审查实践

1. 这不是又一个“AI代码审查”玩具:open-code-review 的真实定位与设计哲学open-code-review 这个名字乍看平平无奇,甚至有点“开源即正义”的朴素感——但如果你把它和 codex cli、zcode cli、trae cli 这些近期高频出现的工具放在一起对比&#xff0c…

2026/10/18 0:01:50

金融AI落地指南:从调研报告到技术选型与工程实践

简介:这份PDF报告聚焦2025年金融服务业中国AI现状与趋势,面向金融科技从业者、AI战略规划人员及关注行业数字化转型的研究者,帮助读者把握生成式AI在银行、支付、交易等场景中的落地路径与投资方向。资源包内含1个PDF文件,大小约1…

2026/10/19 0:04:56

悟空开源无代码平台实战:从实体建模到应用设计避坑指南

简介:基于悟空开源无代码平台的多种应用设计源码,面向希望在不编写代码的情况下快速搭建CRM、HRM、财务系统、ERP、SRM等业务应用的企业与技术人员,通过拖放式界面和内置模板即可完成应用定制与部署。压缩包共697个文件,约10.74MB…

2026/10/19 0:04:56

基于.NET9的多租户权限系统:数据权限与动态API落地实践

简介:这份资源是一套面向 .NET 与 Vue 全栈开发者的中台权限管理系统,后端基于 .Net9,前端采用 Vue3 Element Plus,并配套 uniapp uviewui 移动端方案,实现前后端分离。系统覆盖多租户隔离、数据权限、动态 Api、任务…

2026/10/19 0:04:56

场地预约小程序毕设实战:SSM+微信小程序+MySQL数据库设计到避坑

简介:面向毕业设计场景的场地预约小程序完整项目,基于微信小程序SSMMySql技术栈开发,适合计算机相关专业学生作为选题参考、功能扩展或二次开发起点。系统实现场地类型管理、场地管理、预约管理、取消申请与押金退回等功能,分为管…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑